有没有办法在Web工作者关闭之前执行操作?

时间:2016-05-18 16:01:13

标签: javascript node.js events web-worker

我正在编写一个事件记录器,使用Web worker在辅助进程中处理它。工作人员在本地收集事件,然后每隔几秒将其作为批处理发送出去。

如果浏览器或标签关闭,我需要一种方法来发送任何未发送的批次。网络工作者有没有办法听取onclose事件之类的内容?

我意识到我可以在应用程序本身中执行此操作,但是记录器是一个将在多个位置使用的节点包,我宁愿不让前端负责清理事件记录器。 / p>

2 个答案:

答案 0 :(得分:2)

网络工作者规范的processing model部分没有提到任何内容,特别是"杀死工人"和#34;终止工人"部分。我不认为你有很多选择,但是在UI线程上有代码会向工作人员发送一条消息告诉它清理。

答案 1 :(得分:2)

看起来你可以做self.onclose = function() { ... };,当工人关闭时会调用它。可以阅读更多内容here。由于工人有自己的上下文,您必须通过WorkerGlobalScope访问范围。公开的WorkerGlobalScope.self应该允许您访问onclose()等事件。

这里的警告似乎是API没有标准化。您必须检查您的浏览器以查看它是否受支持(看起来微软还没有实现这个以及IE / Edge的好运)。现在最好的跨平台做法可能就是@ T.J。克劳德建议在用户界面上设置代码,要求工人关闭。