当Web worker终止时,事件自动取消绑定

时间:2017-10-30 12:06:00

标签: javascript angularjs web-worker worker

我在我的项目中使用web worker:一个简单的问题是我们何时终止web worker事件自动解除与工人的绑定:

worker = new Worker("scripts/workers/clockTime-worker.js");
worker.addEventListener("message", onMessage);

function onMessage(evt) {
   //------
}

worker.terminate();

消息事件是否自动取消绑定工作者?

1 个答案:

答案 0 :(得分:1)

不,消息事件仍然绑定到worker对象。

您可以使用worker对象的removeEventListener()属性删除事件,或者,因为您可能无论如何都要使用worker,请将worker对象设置为null以确保它是垃圾回收。

您可以使用此测试来确保在您的平台上执行此操作:

var worker = new Worker( URL.createObjectURL( new Blob([''])));
var e = new MessageEvent('message');

function test() { console.log('Event fired') }

worker.addEventListener('message', test);
worker.dispatchEvent(e); //Event fired

worker.terminate();
worker.dispatchEvent(e); //Event fired

我在chrome和firefox中获得了相同的结果。