1

次のWebワーカーコードとonMessageハンドラーを次のように定義しています

var worker = new Worker('worker.js');

worker.addEventListener('message', function(e){
  App.store.loadMany(App.Activity, e.data);
});

worker.postMessage(structure);

私のWebワーカーコードがworker.jsで行うのは、onmessageコールバックを呼び出して、渡されたオブジェクトを返すことだけです。

self.addEventListener('message', function(e){ 
  self.postMessage(e.data);
}, false);

このコードがマルチスレッドであるかどうかは少しわかりませんが、そうではないと思います。また、この方法で何かを得ているのかどうか疑問に思っています。

4

1 に答える 1

0

ワーカーはメッセージを GUI スレッドにエコー バックし、GUI スレッドは を呼び出す作業を行う必要がありますApp.store.loadMany()。したがって、この場合はメリットがありません。

メイン GUI スレッドを次のように変更した場合:

var worker = new Worker('worker.js');
worker.postMessage(structure);

およびworker.jsを次のようにします。

self.addEventListener('message', function(e){
  App.store.loadMany(App.Activity, e.data);
  self.postMessage('done');
});

App.store.loadMany()の作業をワーカースレッドに入れます。App.store.loadMany()これは、ワーカーで実行できることを前提としています。ワーカーができることにはいくつかの制限があります。

ここここに良いチュートリアルがあります。

于 2012-06-08T22:42:29.603 に答える