我有一个主要的javascript文件,我们称之为“main.js”。 此文件创建Web Worker“worker.js”。 (见下面的代码)
我希望能够从工作人员向自己发起一个事件。
现在我通过向main.js发送postMessage来使用解决方法, 然后回复worker.js。 工作人员可以毫无问题地对此消息做出反应。 所以基本上工人对他自己的postMessage做出反应,这就是我想要的。 我只是不喜欢main.js参与从工人到工人的互动这一事实。
甚至可以这样做吗?
main.js中的代码
var worker = new Worker('worker.js');
worker.addEventListener('message', function(e) {
var data = e.data;
switch (data.msgType) {
case 'workerWantsToContinue':
worker.postMessage({'msgType':'continueSentFromMain'});
break;
}
}, false);
//start the worker
worker.postMessage({'msgType': 'start'});
worker.js内的代码
executeStuff = function(){
//Do some stuff here
//
// Here I want to send a message from the worker to itself
// Something like
// postMessageToSelf({'msgType': 'continueSentFromWorker'});
//
// I can't use CustomEvent inside a Web Worker.
//
//For now I have to do it like this
self.postMessage({'msgType': 'workerWantsToContinue'});
}
continueStuff = function(){
//Do some stuff here
}
self.addEventListener('message', function(e) {
var data = e.data;
switch (data.msgType) {
case 'start':
executeStuff();
break;
case 'continueSentFromMain':
continueStuff();
break;
case 'continueSentFromWorker':
continueStuff();
break;
}
}, false);