javascript Web Worker可以向自己发送事件吗?

时间:2014-07-09 12:07:36

标签: javascript events web worker message-passing

我有一个主要的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);

0 个答案:

没有答案