グローバル変数が宣言されているこのWebワーカーを使用しています。新しく生成されたWebワーカー(ワーカー2)で同じ(ワーカー1のグローバル変数)にアクセスできますか?
WebワーカーでjQueryを使用しようとすると、「ウィンドウが定義されていません」というエラーが表示されます。 Web Worker
でjQueryを使用する方法はありますか?
importScripts( 'jquery-latest.js'); function fetch_ajax(url){ $ .ajax({ type: ' GET '、 url:url、 success:function(response){ postMessage(response); } }); } fetch_ajax( 'test.txt');
Webワーカーにはwindow
オブジェクトがありません。
グローバル状態にアクセスするには、代わりにself
を使用します。メインスレッドとワーカースレッドの両方で機能するコードです。
ただし、親DOM
にアクセスしたり操作したりすることはできません(例:get window.jQuery
経由self.jQuery
)。
メインスレッドウィンドウself
はWindowオブジェクトを指しますが、ワーカースレッドではself
は別のWorkerGlobalScope
オブジェクトを指します。
@buleyのヒントに基づいて、私はそれを行いました:
var window = self;
importScripts(/* dependencies here */);
/* my code */
私の場合、ES6-Promise libを使用しようとしました: https://github.com/jakearchibald/es6-promise#readme