gpt4 book ai didi

Javascript SharedWorker 未与主程序正确通信

转载 作者:行者123 更新时间:2023-11-28 04:18:28 25 4
gpt4 key购买 nike

我曾与 Worker objects before 合作过,而且非常简单,尤其是教程。

所以下一步自然是 work with SharedWorkers 。我已经把它记下来了,但现在 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 脚本...

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。)从多处理的 Angular 来看,这就是我期望 SharedWorkers 所做的事情 - SharedWorker 的上下文是完全独立的,console 不存在于其范围内。

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

关于Javascript SharedWorker 未与主程序正确通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com