持续30-40分钟我想知道如何将一个数组传递给一个web worker并返回它。目前我做到以下几点:如何将全局数组传递给web worker并将其返回?
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'? – Bergi
阅读这是一种保存全局数组的方法,因为我有另一个使用它的全局函数 – 1000Gbps
保留'myglobalarray',调用'postMessage'将它克隆到数组。您可能需要[阅读文档](https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage)? – Bergi