web-dev-qa-db-ja.com

キャッチされないReferenceError:importScriptsが定義されていません

なぜこのエラーが表示されるのですか?

このグローバル機能を正しく使用できるはずです。

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

私はクロムを使用しています。

https://code.google.com/p/bitjs/ を使用しています。

importScripts('io.js');
importScripts('archive.js');
28
netigger

このコードはワーカースクリプト内にある必要があります。ワーカー自体は、新しいWorkerオブジェクトを介して作成されます-チュートリアルの Getting Started を参照してください。

リンクしたコードは、作成されたワーカー内にあります here

18
Bergi

ワーカーを作成すると、実際には2回実行されます。最初のパスは、グローバルな「ウィンドウ」オブジェクトのコンテキストで行われます(つまり、すべてのウィンドウオブジェクト関数にアクセスできます)。 2番目の呼び出しは、「importScripts」が存在する別のグローバルオブジェクトを持つワーカーのコンテキストで行われます。

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

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

AddEventListenerがifステートメント内にあることに注意してください。外側に配置すると、コールバックは2回登録されます。 「ウィンドウ」グローバルに1回、ワーカーのグローバルに1回。

ハッピーコーディング!

29
SJ Anderson

このエラーも発生しました。私の場合、それはKarma/Jasmineを使用してコードをテストしているためです。テストフレームワークのため、worker.jsファイルもメインスレッドによってロードされます。

Worker.jsファイルを次のようにラップして、このエラーを回避しました。

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

代替ソリューションを提供するロブのコメントを参照してください。

10
gm2008