2013-02-23 94 views
9

有没有办法在JavaScript中销毁HTML5 WebWorkers?破坏WebWorkers

这是我的情况:我有一个Web应用程序,可以生成相当数量的WebWorkers(16到32之间的任何地方)来优化某些渲染过程。这个过程在最初的几次中运行良好,但是当脚本运行多次(不重新加载页面)时,页面就会死掉。当我尝试同时产生大量(100多个)Web工作者时,会出现同样的错误,所以我假设我遇到了同样的障碍。

当脚本运行多次时,第一轮实例化的WebWorkers不再需要存在;我不重用任何WebWorker对象。我想摧毁第一次创建的WebWorkers,这样在未来尝试生成新的WebWorkers时脚本的执行不会停止。

我只在Chrome和Firefox中注意到这个问题; Safari似乎没有这个限制。

回答

10

您应该能够从主窗口调用该立即终止工人:

myWorker.terminate(); 

查看完整的API在这里:https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

或者,你可以调用close()从工人本身看:https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

+0

正是我在找的东西。 – 2013-02-23 07:09:26

+0

但它只会阻止工作人员完成任务,工作人员的实例仍在内存中。 – vsync 2015-09-13 15:08:35

+1

@vsync我也正在使用WebWorker实例。就我而言,我需要4个Web工作人员来处理4个不同的DOM区域,这些区域需要每秒更新一次,这是基于我传递给每个Web工作人员并处理并发送回浏览器的一些信息。在这个用例中,我应该在每次调用之后终止()/关闭()每个WebWorker,还是可以重复使用同一个WebWorker,而不必担心性能问题,内存泄漏等问题? – 2016-07-31 17:09:35