当网络工作者 class 被垃圾收集时会发生什么

What happens when a web worker class gets garbage collected

我有一个 class,它在实例化 class 时处理新 Web Worker 的创建,post 给 Worker 的消息是 returns 一个承诺当工作人员完成任务时,这个问题就会得到解决。基本上,我正在调用一个 class 来处理创建、posting、侦听和终止 worker。

但是,如果我创建这个 class 的新实例,post 一条消息,并结束我的函数,worker 会发生什么?它会变成孤立的并保持 运行 它的任务直到完成吗?

另外,这有点离题,但是一次实例化 n 个 worker 会有多糟糕? 8? 20? 50?浏览器如何处理?

Does it become orphaned and keeps running its task until it's done?

是的。根据规范,在这种情况下,事件循环必须 运行 完成,worker 被标记为 "suspendable",最后,

Reference 第 10 步

how bad would it be to instantiate n number of workers at once? 8? 20? 50?

你可以在这里玩:http://math.hws.edu/eck/jsdemo/jsMandelbrot.html

我亲眼目睹了 16 个 worker 应用程序的嗡嗡声。必须考虑 spinup/teardown 和消息传递之间的权衡。