无法在'DedicatedWorkerGlobalScope'上执行'postMessage':提供的值无法转换为序列

时间:2017-11-15 05:18:59

标签: web-worker

我收到以下错误

  

未捕获的TypeError:无法执行'postMessage'   'DedicatedWorkerGlobalScope':提供的值无法转换   一个序列。

在网络工作者的这一行:

postMessage("hi", "http://localhost:8000");

(事实上,这就是整个网络工作者)。

基本文件包含:

var myWorker = new Worker("test.js");
myWorker.onmessage = function (e) {
    console.log('Message received from worker');
};

我不确定它抱怨哪个值,我不确定将它转换为“序列”意味着什么。

2 个答案:

答案 0 :(得分:3)

发布消息的目标是隐式的(调用函数的工作对象,或者从工作者调用时创建工作者的脚本。所以你应该使用:

postMessage("hi");

请参阅:postMessage on MDN

如果对于像我这样因其他无关原因而遇到此问题的人有用,我就是这样做的:

postMessage("type", value)

当我打算做的时候:

postMessage(["type", value])

答案 1 :(得分:0)

当我尝试在<a href="http://example.com">example.com</a> 中传递多个参数时,显示了相同的错误消息。

一种解决方案是使用JSON对象传递它。

例如:postMessage

然后,当您要访问它时,可以执行以下操作:

postMessage({'key1': 'value1','key2': 'value2'});