ReferenceError Uncaught: importScripts n'est pas défini

Pourquoi j'obtiens cette erreur?

je devrais pouvoir utiliser cette fonction globale Non?

http://www.html5rocks.com/en/tutorials/workers/basics/

j'utilise du chrome.

j'utilise https://code.google.com/p/bitjs/ et elle commence par

importScripts('io.js');
importScripts('archive.js');
25
demandé sur netigger 2013-01-24 15:19:22
la source

3 ответов

ce code doit être dans un script worker. Le travailleur lui-même est créé par un nouveau Worker -Pour Commencer dans le tutoriel.

le code que vous avez lié est à l'intérieur du worker créé ici.

13
répondu Bergi 2013-01-24 19:25:58
la source

quand vous créez un worker, il est en fait exécuté deux fois. La première passe est dans le contexte de l'objet global 'window' (ce qui signifie que vous avez accès à toutes les fonctions de l'objet window). Le second appel est dans le contexte du travailleur qui a un objet global différent, un où "importScripts" existe.

// proper initialization
if( 'function' === typeof importScripts) {
   importScripts('script2.js');
   addEventListener('message', onMessage);

   function onMessage(e) { 
     // do some work here 
   }    
}

notez que l'addEventListener est à l'intérieur de l'instruction if. Si vous le placez à l'extérieur, votre rappel sera enregistrée deux fois. Une fois sur la "fenêtre" mondiales et une fois sur la place de l'ouvrier mondial.

bon codage!

23
répondu SJ Anderson 2015-02-20 05:21:01
la source

je rencontre cette erreur. Dans mon cas, c'est parce que je teste le code en utilisant Karma/Jasmine. En raison du cadre de test, le travailleur.fichier js est chargé par le thread principal.

j'ai évité cette erreur en enveloppant le travailleur.fichier js:

    if( 'undefined' === typeof window){
       importScripts('workerscript2.js');
    ...
    }

Veuillez consulter les commentaires ci-dessous par Rob, qui offre une solution de rechange.

7
répondu gm2008 2016-07-20 19:24:14
la source

Autres questions sur