なぜこのエラーが発生し続けるのですか?
このグローバル関数を使用できるはずですよね?
http://www.html5rocks.com/en/tutorials/workers/basics/
クロームを使用しています。
https://code.google.com/p/bitjs/を使用していますが、
importScripts('io.js');
importScripts('archive.js');
なぜこのエラーが発生し続けるのですか?
このグローバル関数を使用できるはずですよね?
http://www.html5rocks.com/en/tutorials/workers/basics/
クロームを使用しています。
https://code.google.com/p/bitjs/を使用していますが、
importScripts('io.js');
importScripts('archive.js');
ワーカーを作成すると、実際には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回。
ハッピーコーディング!
このコードは、ワーカースクリプト内にある必要があります。ワーカー自体は、新しいWorker
オブジェクトを介して作成されます。チュートリアルの「はじめに」を参照してください。
リンクしたコードは、ここで作成したワーカー内にあります。
私もこのエラーに遭遇しました。私の場合、Karma/Jasmineを使用してコードをテストしているためです。テストフレームワークにより、worker.jsファイルはメインスレッドによってもロードされます。
私はworker.jsファイルを次のようにラップピッグすることでこのエラーを回避しました:
if( 'undefined' === typeof window){
importScripts('workerscript2.js');
...
}
代替ソリューションを提供するRobによる以下のコメントを参照してください。
エラーを回避するための解決策を提供していただきありがとうございます。私は新しいので投票できませんが、それを書いていますimportScripts('Myworkerscript.js');
。
if( 'undefined' === typeof window){
importScripts('Myworkerscript.js');
}
そして魔法が起こり、エラーはなくなりました。
直面しているリンティングの問題である場合は、importScriptsを含むファイルに次のコメントを追加できます。
/* eslint-disable no-undef */