Javascript Web Worker 修改全局对象
Javascript Web Workers Modifying Global Object
关于JavaScript Web Workers的文档令人生畏。基本上,我有一个沉重的循环,导致浏览器挂起一点。如果我能将这个繁重的循环卸载到另一个 CPU 内核上,那么我就有希望减轻应用程序的负担并让它运行得更流畅。我正在尝试使用一个简单的循环修改全局变量:
var globalarr;
function webWorkerOp(CSV) {
var lines = CSV.split("%");
var items, obj, arr = [];
for (var x = 0, len = lines.length; x < len; x++) {
items = lines[x].split(",");
obj = {};
obj.a = +items[0];
obj.b = +items[1];
arr[x] = obj;
}
globalarr = arr;
}
如何将此循环操作包装到 Web worker 中,而不会与运行代码的主程序发生冲突?我认为,全局变量的修改肯定会是一个问题。甚至可以将新数组分配给 globalarr var 吗?感谢帮助。谢谢!
无法从 Web worker
修改window.global
,因为 Web worker 没有对 window
对象的引用。您可以通过 window.postMessage
与网络工作者进行通信。使用此方法,您可以将数组传递回主线程,并在那里设置全局:
主线程
var worker = new Worker('worker.js');
var globalArr;
worker.addEventListener('message', function (e) {
globalArr = e.data;
});
辅助角色脚本
// do work
var arr = [1,3,5,]
self.postMessage(arr);
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- javascript无法重新定义函数内部的全局对象
- Javascript,从静态函数中打印全局对象
- 为什么“this”指的是全局对象
- Do let语句在全局对象上创建属性
- underscore.js,名为“”的全局对象;出口;和livefyre javascript API-集成冲突
- 为什么“this”指的是对象“obj”而不是全局对象
- 从函数调用全局对象的方法
- 谷歌分析的全局对象
- AngularJS:避免使用“angular”全局对象
- Javascript Web Worker 修改全局对象
- 想要在回调中更新对象,给出正确的日志,但全局对象未更新
- 让函数中的接收器默认为全局对象背后的基本原理是什么?
- 蜘蛛猴:如何删除全局对象
- 为什么函数在全局对象中不可用
- 访问请求会在全局对象中生成
- 全局对象问题
- React Native 中全局对象的模式
- Expressjs - 全局对象
- 是否可以在 Javascript 中更改或删除全局对象的属性