43

グローバル変数が宣言されているこのWebワーカーを使用しています。新しく生成されたWebワーカー(ワーカー2)で同じ(ワーカー1のグローバル変数)にアクセスできますか?

WebワーカーでjQueryを使用しようとすると、「ウィンドウが定義されていません」というエラーが表示されます。でjQueryを使用する方法はありますWeb Workerか?

importScripts('jquery-latest.js');

関数fetch_ajax(url){
  $ .ajax({
    タイプ:'GET'、
    url:url、
    成功:function(response){
    postMessage(応答);  


    }
  });
}

fetch_ajax('test.txt');
4

2 に答える 2

70

windowWebワーカーにはオブジェクトがありません。

グローバル状態にアクセスするselfには、代わりに、メインスレッドとワーカースレッドの両方で機能するコードを使用します。

ただし、親にアクセスしたり操作したりすることはできませんDOM(例:get window.jQueryvia self.jQuery)。

メインスレッドウィンドウselfはWindowオブジェクトを指しますが、ワーカースレッドでselfは別のWorkerGlobalScopeオブジェクトを指します。

于 2012-06-28T02:17:36.613 に答える
22

@buleyのヒントに基づいて、私はそれを行いました:

var window = self;

importScripts(/* dependencies here */);

/* my code */

私の場合、ES6-Promise libを使用しようとしていました:https ://github.com/jakearchibald/es6-promise#readme

于 2014-03-04T01:11:24.633 に答える