这是我的工作者代码:
onmessage = function (event) {
postMessage({'data': event.data}, ['http://localhost:9000']);
};
以下是我使用worker的代码:
var worker = new Worker("/path/to/my/worker.js");
worker.onmessage = function (event) {
console.log("RECEIVED: ", event.data);
};
worker.onerror = function (err) {
console.log('ERROR: ', err)
};
worker.postMessage({'data': 'blabla', 'msg': 'Hi'});
但是当在worker代码中调用postMessage时,会出现以下错误: “Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': Value at index 0 does not have a transferable type。”
我也尝试使用以下代码将对象序列化:
onmessage = function (event) {
postMessage(JSON.stringify({'data': event.data}), ['http://localhost:9000']);
};
但是什么都没有改变。
------ 编辑 ----------------------------------------------------------------
我在工作文件中尝试了以下代码:
function count() {
var i = 0;
self.onmessage = function (event) {
postMessage("Hello " + event.data);
};
for (i = 0; i < 5; i++) {
postMessage(i);
}
postMessage("Finished");
}
count();
在 onmessage 函数中的 postMessage 是唯一给我报错的。