当 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
将它们放入一个数组中,而不是使用您不断覆盖的单个变量。
我目前正在 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
将它们放入一个数组中,而不是使用您不断覆盖的单个变量。