【发布时间】:2014-03-02 18:25:35
【问题描述】:
过去 30-40 分钟,我试图了解将数组传递给网络工作者并返回它的确切工作原理。目前我执行以下操作:
var myglobalarray = [1, 2, 3, 4, 5];
var code = 'self.addEventListener("message", function(e) {' +
' var receivedArray = e.data.buffer;' +
' var receivedArraysize = receivedArray.length;' +
' //doSomethinWithreceivedArray here...' +
' self.postMessage(receivedArray, [receivedArray]);' +
'}, false);';
var blob = new Blob([code], {type: 'text/javascript'});
var blobURL = window.URL.createObjectURL(blob);
var worker = new Worker(blobURL);
worker.addEventListener('message', function(e) {
var returnedArray = e.data;
myglobalarray.length = 0;
myglobalarray = e.data.slice();
}, false);
var passedArray = new ArrayBuffer(myglobalarray);
worker.postMessage(passedArray, [passedArray]);
但仍然得到receivedArray is undefined 和receivedArray.length is undefined。任何想法问题出在哪里?
【问题讨论】:
-
你为什么尝试使用
ArrayBuffer? -
读到这是一种保存全局数组的方法,因为我有另一个使用它的全局函数
-
myglobalarray被保留,调用postMessage将克隆数组。你可能想read the docs? -
好的,但我仍然收到空数组元素
标签: javascript blob web-worker postmessage arraybuffer