Javascript SharedWorker 未与主程序正常通信

Javascript SharedWorker is not communicating properly with the main program

我用过 Worker objects before,它非常简单,尤其是教程。

所以下一步自然是 work with SharedWorkers。我已经记下来了,但现在 SharedWorker 似乎没有正确响应。我向 SharedWorker 发送了一个 postMessage,在我的代码中,我让 SharedWorker 发回相同的文本,有点像回声效果。

不幸的是SharedWorker只有returns从主程序发送的消息的第一个字母,并没有记录到控制台"Background"字符串让我知道SharedWorker是运行. "Setup complete" 日志消息也证明 SharedWorker 已创建。

代码...

主 HTML 文件...

<html>
<head>
<title>Test</title>
</head>
<body>
<script>
var w = new SharedWorker('sharedworker.js');
w.port.start();
w.port.postMessage("start");
w.port.onmessage = function(e){
  console.log(e.data);
}; 
console.log("Setup complete.");
</script>
</body>
</html>

SharedWorker 脚本...

onconnect = function(e){
  var port = e.ports[0];
  port.addEventListener('message', function(e){
    port.postMessage(e.data[0]);
  });
  port.start();
  console.log("Background.");
}

我做错了什么?

Unfortunately the SharedWorker only returns the first letter of the message sent from the main program

[0] 放在对正在读取的字符串的引用上。目前它将字符串作为数组连接并且只返回第一个字符。

port.postMessage(e.data); // versus  port.postMessage(e.data[0]);

and does not log to the console the "Background" string to let me know the SharedWorker is running

我不是专家,但我会猜一猜。 (我在文档中看不到任何明显的证据来支持这一点,而且我之前自己也没有使用过 SharedWorkers。)从多处理的角度来看,这就是我期望 SharedWorkers 做的事情 - SharedWorker 的上下文是完全独立的,console 不存在于它的范围内。

在另一个 SO 线程上有一些关于调试的可能有用的答案,可能会帮助您继续进行调试:How to debug web workers