我在我的项目中使用web worker:一个简单的问题是我们何时终止web worker事件自动解除与工人的绑定:
worker = new Worker("scripts/workers/clockTime-worker.js");
worker.addEventListener("message", onMessage);
function onMessage(evt) {
//------
}
worker.terminate();
消息事件是否自动取消绑定工作者?
答案 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中获得了相同的结果。