Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SharedWorker与主程序通信不正常_Javascript_Html_Shared Worker - Fatal编程技术网

Javascript SharedWorker与主程序通信不正常

Javascript SharedWorker与主程序通信不正常,javascript,html,shared-worker,Javascript,Html,Shared Worker,我曾经与之合作过,而且非常简单,特别是在教程中 因此,下一步自然是。我记下来了,但现在看来SharedWorker没有正确响应。我向SharedWorker发送一条postMessage,在我的代码中,我让SharedWorker发回相同的文本,有点像回声效果 不幸的是,SharedWorker只返回从主程序发送的消息的第一个字母,而没有将“Background”字符串记录到控制台以让我知道SharedWorker正在运行。此外,“安装完成”日志消息证明SharedWorker已创建 代码 主H

我曾经与之合作过,而且非常简单,特别是在教程中

因此,下一步自然是。我记下来了,但现在看来SharedWorker没有正确响应。我向SharedWorker发送一条postMessage,在我的代码中,我让SharedWorker发回相同的文本,有点像回声效果

不幸的是,SharedWorker只返回从主程序发送的消息的第一个字母,而没有将“Background”字符串记录到控制台以让我知道SharedWorker正在运行。此外,“安装完成”日志消息证明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只返回从主程序发送的消息的第一个字母

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

port.postMessage(e.data); // versus  port.postMessage(e.data[0]);
并且不会将“后台”字符串登录到控制台,让我知道SharedWorker正在运行

我不是专家,但我会猜一猜。(我在文档中看不到任何明显的证据来支持这一点,我自己以前也没有使用过SharedWorkers。)从多处理的角度来看,这就是我希望SharedWorkers做的-SharedWorker的上下文是完全独立的,
控制台
在其作用域中不存在

关于调试,另一个SO线程中可能有一些有用的答案,这些答案可能会帮助您进行调试:

不幸的是,SharedWorker只返回从主程序发送的消息的第一个字母

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

port.postMessage(e.data); // versus  port.postMessage(e.data[0]);
并且不会将“后台”字符串登录到控制台,让我知道SharedWorker正在运行

我不是专家,但我会猜一猜。(我在文档中看不到任何明显的证据来支持这一点,我自己以前也没有使用过SharedWorkers。)从多处理的角度来看,这就是我希望SharedWorkers做的-SharedWorker的上下文是完全独立的,
控制台
在其作用域中不存在


关于调试,另一个SO线程上可能有一些有用的答案,这些答案可能会帮助您进行调试:

这就是问题所在!port.postMessage(e.data[0]);如果要传递数组,例如w.port.postMessage([data1,data2]),则使用。这就是票证!port.postMessage(e.data[0]);在传递数组时使用,例如w.port.postMessage([data1,data2])。