【发布时间】:2013-04-10 20:59:44
【问题描述】:
我目前有这个代码来创建一个 Web Worker:
w = new Worker("webwork.js");
w.onmessage = function(event) { alert(event.data); }
然后是 Web Worker 的 webwork.js 代码:
self.onmessage = function(event) {
//var ss=r; //Causes error because of undefined
var ss="";
for(var currProp in event) {
ss+=("event."+currProp+"="+event[currProp]+"\n");
}
postMessage(ss);
}
现在我想用这个代码传输一个 128 兆字节的ArrayBuffer:
var r = new ArrayBuffer(1048576*128);
w.postMessage(0, [r]);
现在我应该已经传输了变量r,我如何从 Web Worker 本身访问它。我试过event.r,只是r,self.r 和其他一些东西,比如尝试为ArrayBuffers 的数组添加第二个函数参数,但没有任何效果。
如何从 Web Worker 访问传输的变量?
【问题讨论】:
-
不会在
event.data吗? -
似乎并非如此。如果我使用“w.postMessage(0,[r]);”,那么“event.data”就是 0,但我不知道 ArrayBuffers 数组的位置,即使通过检查所有属性事件。我找不到它。
标签: javascript web-worker transferable