Chi*_*ara 5 javascript postmessage worker web-worker transferable
这是我的工人的代码:
onmessage = function (event) {
postMessage({'data': event.data}, ['http://localhost:9000']);
};
Run Code Online (Sandbox Code Playgroud)
这是我使用工人的代码:
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'});
Run Code Online (Sandbox Code Playgroud)
但是当调用工作代码中的 postMessage 时,它给了我这个错误:“无法在 'DedicatedWorkerGlobalScope' 上执行 'postMessage':索引 0 处的值没有可转移类型。”
我还尝试使用以下代码序列化对象:
onmessage = function (event) {
postMessage(JSON.stringify({'data': event.data}), ['http://localhost:9000']);
};
Run Code Online (Sandbox Code Playgroud)
但一切都没有改变。
- - - 编辑 - - - - - - - - - - - - - - - - - - - - - - ---------------------
我在工作文件中尝试了以下代码:
function count() {
var i = 0;
self.onmessage = function (event) {
postMessage("Hello " + event.data);
};
for (i = 0; i < 5; i++) {
postMessage(i);
}
postMessage("Finished");
}
count();
Run Code Online (Sandbox Code Playgroud)
onmessage 函数中的 postMessage 是唯一一个给我一个错误的函数。
的第二个参数Worker.postMessage()用于保存您想要将其所有权转移到主窗口的对象列表。这仅限于某些特定类型(主要是ArrayBuffers 和Bitmaps)。
解释错误消息:你的第二个参数是["some string"]at"some string"索引0,JS 认为你想要传输该对象(这显然不是你的意图)。
只要删除['http://localhost:9000'],你应该没问题。
有关详细信息和示例,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage 。
| 归档时间: |
|
| 查看次数: |
5094 次 |
| 最近记录: |