gpt4 book ai didi

javascript - 在 Chrome 的 Worker 中使用 `console.log` 会打印两次相同的消息

转载 作者:可可西里 更新时间:2023-11-01 01:43:01 28 4
gpt4 key购买 nike

与标题差不多。更奇怪的是,这只会在您在新选项卡中运行程序时发生,如果您只是刷新页面,每个 console.log 只会有一条消息。

这是 main.js :

const worker = new Worker('worker.js');

这是 worker.js :

console.log('Foo bar!');

这是 index.html :

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Web Workers</title>

<style></style>
</head>
<body>

<script src="main.js"></script>
</body>
</html>

Firefox 不会发生同样的情况。我使用的是 Chrome 版本 65,更奇怪的是,重复的消息似乎不属于“上下文”下拉列表中列出的任何上下文,因此当我尝试过滤除 worker.js 发送的消息之外的所有控制台消息时,列出的唯一消息是第一条消息,第二条消息(副本)似乎不属于任何上下文。

@bean 的回答显示,已经有一个这样的问题(我相信是从 2018 年 2 月开始)尚未得到解答。如果也没有人回答这个问题,我会考虑在 Chrome 的开发论坛/其他论坛中提出问题。

最佳答案

这似乎是 Chrome 中的一个奇怪行为,有人在这里发布了同样的问题 Console.log double logging from web workers .

但是,将 console.log 直接放在 worker.js 中并不是一个好习惯。 Web Worker 在一个单独的线程中运行并监听从 main.js 发布的消息并采取相应的行动,因此任何业务逻辑都应该放在 onmessage 事件处理程序中。通过这样做,您不必担心代码被执行两次。

关于javascript - 在 Chrome 的 Worker 中使用 `console.log` 会打印两次相同的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49659464/

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