我想知道当用户关闭产生工作线程的选项卡时,当线程仍在工作时会发生什么。它会阻止一切吗?如果是这样,即使关闭选项卡,有没有办法在后台运行线程?
答案 0 :(得分:12)
是的它会停止一切,一个(专职的)工人不能比它的主人更长寿。如果您使用可以拥有多个所有者的共享工作者,只要至少有一个所有者还活着,该工作人员将只能保持活动状态。即使您将纠缠的MessagePort
传递给另一个窗口(即消息端口的所有者而不是工作者的所有者),情况也是如此。
因此,对于共享工作人员,您可以通过打开一个与工作人员建立自己连接的新窗口(使用new SharedWorker(...)
)来“转移”所有权,然后关闭旧窗口。但是一个窗口必须始终保持打开状态。
答案 1 :(得分:4)
看看这里
http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerglobalscope
我认为它确认一旦浏览器消失,任何工人都必须停下来。
每当丢弃一个Document对象时,都必须从中删除它 列表包含该列表的每个工作者的工作者文档列表 文献
如果您有一个使用Web工作人员的窗口,并关闭该窗口(或选项卡),则工作人员会离开。
如果你有一个窗口,打开其他窗口或标签,工人可以继续。但如果你关闭所有东西,它们都会消失。