1

我有如下定义的网络工作者代码和 onMessage 处理程序

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

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

worker.postMessage(structure);

我在 worker.js 中的所有 web worker 代码都是调用 onmessage 回调并传回传入的对象:

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

我有点不确定这段代码是否是多线程的,我认为它不是,如果我想知道我是否通过这种方式获得了什么。

4

1 回答 1

0

您的Worker正在向 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()放入Worker线程中。这是假设App.store.loadMany()可以在 Worker 中运行。Worker可以做什么有一些限制。

这里这里有一个很好的教程。

于 2012-06-08T22:42:29.603 回答