当 Web Worker 具有相同的名称时,我如何接收来自它们的消息?

How can I recieve messages from Web Workers when they have the same name?

我目前正在 JavaScript 学习 Web Workers,因此,制作一个脚本说某事 8 次,每个线程做 1 次。

所以为了做到这一点,我使用了这个代码:

main.js

for (let workersAmount = 0; workersAmount < 4; workersAmount++)
{
    var socketWorker = new Worker("worker.js");
}

socketWorker.onmessage = function(event)
{
    console.log(event.data);
}

worker.js:

postMessage("Why can't it just work!")

这是结果(这是我的第一个 post,所以我无法嵌入): image

如您所见,它只显示了 1 次文本,而有 4 个工人。这(我认为)是因为每次都替换变量“socketWorker”,但仍然保留旧的 worker.js

所以,有人知道如何解决这个问题吗?在此先感谢您的帮助!

他们的名字不同。他们根本没有名字

socketWorker 变量有一个名称。它也有一个价值。

首先,它的值是对第一个工人的引用。然后你立即用第二个工人的参考值覆盖它。等等。

当您覆盖第一个引用时,您不再拥有该引用

你把它扔掉了。

无法取回。

当您到达第 socketWorker.onmessage = function(event) 行时,您只能使用存储在 socketWorker 中的 last 引用。


onmessage 属性 inside for 循环赋值,before你覆盖了 socketWorker.

的值

如果您将来需要保留对每个工作人员的引用,那么 push 将它们放入一个数组中,而不是使用您不断覆盖的单个变量。