这个 Web worker 代码是多线程的吗,我是否获得了什么
Is this web worker code multi-threaded and am I gaining anything
我有以下 web worker 代码和 onMessage 处理程序,如下所示
var worker = new Worker('worker.js');
worker.addEventListener('message', function(e){
App.store.loadMany(App.Activity, e.data);
});
worker.postMessage(structure);
我的 Web worker 代码在 worker 中所做的.js就是调用 onmessage 回调并传回传递的对象:
self.addEventListener('message', function(e){
self.postMessage(e.data);
}, false);
我有点不确定这段代码是否是多线程的,我认为它不是,如果我想知道我这样做是否有什么收获。
您的工作线程正在将消息回显回 GUI 线程,然后该线程必须执行调用App.store.loadMany()
的工作。所以在这种情况下没有任何好处。
如果将主 GUI 线程更改为:
var worker = new Worker('worker.js');
worker.postMessage(structure);
和您的工作人员.js:
self.addEventListener('message', function(e){
App.store.loadMany(App.Activity, e.data);
self.postMessage('done');
});
您将App.store.loadMany()
的工作放入工作线程中。这是假设App.store.loadMany()
可以在 worker 中运行。对于工作人员可以执行的操作有一些限制。
这里有一个很好的教程。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以禁用jquery中的单个单选按钮
- 是否可以从父类访问子类的属性
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何让程序检查所选单词中是否有按键
- 是否有人获得了在IE10中工作的javascript msProtocols属性
- 为什么当我在页面中声明超过1个单独的引导手风琴(面板-组元素)时,我获得了与opencollapse相关的错误行为
- angular的promise - on submit获得了"错误:args是null $parseFunct