当我发出webworker。postMessage('any message'),它会被onMessage监听器处理两次。我尝试在消息上运行stopPropagation,但它仍然再次运行。我通过console.log验证了在主线程中对postMessage的调用只被调用一次。我验证了被调用的网络工作者是唯一的。我可以修复它,以便它postMessage只导致一个onMessage事件被调用?
显示调用web worker的代码片段:
this.webworker.postMessage('Message one');
}
我的网络工作者:
/// <reference lib="webworker" />
onmessage = function(data) {
console.log('@@ in web worker' + JSON.stringify(data.data));
data.stopPropagation();
}
类似的事情也发生在我身上。我也解释不清楚,尽管我做了些测试。无论如何,我唯一的贡献是相同的有点错误的脚本只在Firefox中给了我双倍的console.log消息,而不是在Edge中,也不是Chrome。
无论如何,在我的简单测试工作者中我设置了一个计数器。这样我就可以确认执行只发生一次,并且问题只与console.log有关。
self.curcounter=self.curcounter+ 1; //this has been executed once
self.console.log('WORKER received a INT:' + e.data + ' self.curcounter: '+ self.curcounter); //this twice