最后 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
and receivedArray.length is undefined
。任何想法问题出在哪里?