当标签在运行时关闭时,HTML5 Web工作线程会发生什么?

时间:2012-01-16 02:49:41

标签: javascript html5 web-worker

我想知道当用户关闭产生工作线程的选项卡时,当线程仍在工作时会发生什么。它会阻止一切吗?如果是这样,即使关闭选项卡,有没有办法在后台运行线程?

2 个答案:

答案 0 :(得分:12)

是的它会停止一切,一个(专职的)工人不能比它的主人更长寿。如果您使用可以拥有多个所有者的共享工作者,只要至少有一个所有者还活着,该工作人员将只能保持活动状态。即使您将纠缠的MessagePort传递给另一个窗口(即消息端口的所有者而不是工作者的所有者),情况也是如此。

因此,对于共享工作人员,您可以通过打开一个与工作人员建立自己连接的新窗口(使用new SharedWorker(...))来“转移”所有权,然后关闭旧窗口。但是一个窗口必须始终保持打开状态。

答案 1 :(得分:4)

看看这里

http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerglobalscope

认为它确认一旦浏览器消失,任何工人都必须停下来。

  

每当丢弃一个Document对象时,都必须从中删除它   列表包含该列表的每个工作者的工作者文档列表   文献

如果您有一个使用Web工作人员的窗口,并关闭该窗口(或选项卡),则工作人员会离开。

如果你有一个窗口,打开其他窗口或标签,工人可以继续。但如果你关闭所有东西,它们都会消失。