我有以下代码:
src / store / modules / outcome-analyzer / outcome-analyzer.js
import Worker from 'worker-loader!./set-hit-percentages.worker.js';
// ...
let actions = {
setHitPercentages: function (context) {
let worker = new Worker();
// let players = resultsMutations.constructPlayersForSetHitPercentages(context.state);
// worker.postMessage({
// message: 'get hit percentages',
// players: players,
// });
worker.postMessage({
message: 'test',
value: 'foobar',
});
worker.onmessage = function (e) {
if (e.data.message === 'finished') {
context.commit('outcomeAnalyzer/setHitPercentages', e.data.hitPercentages);
}
};
worker.terminate();
},
};
src / store / modules / outcome-analyzer / set-hit-percentages.worker.js
self.addEventListener('message', function (e) {
debugger;
if (e.data.message === 'test') {
console.log(e.data.value);
}
else if (e.data.message === 'get hit percentages') {}
});
调用setHitPercentages
时,它应该向该工作人员发布一条消息,并且该工作人员应该接收该消息。工人永远不会收到它。 debugger
中的set-hit-percentages.worker.js
永远不会被命中,console.log
也不会被命中。
setHitPercentages
调试器中,我看到已定义Worker
。我还看到worker
是在let worker = new Worker();
运行之后定义的。 worker
具有onmessasge
和onerror
方法,并且它继承了postMessage
之类的其他内容。node_modules
中有worker-loader
。在package.json
中,我有"worker-loader": "^1.1.1"
。import Worker from 'worker-loader!./xxx-yyy-zzz.worker.js';
部分。答案 0 :(得分:1)
您将Point
放到了worker.terminate();
处理程序中,可能放错了位置。就像现在一样,该工人正在被产卵,但是几乎在此之后立即被杀死。