Javascript web workers: why do I need to postMessage twice to trigger event?

旧巷老猫 提交于 2019-12-22 20:18:30

问题


I am a newcomer to Javascript and web programming in general. I am trying to figure out web workers, and have the following code (running in chrome):

worker_example.html

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="worker_example.js"></script>
    </head>
<html>

worker_example.js

var worker = new Worker("worker.js");

worker.addEventListener('message', function(e) {
    document.write("hello");
}, false);

worker.postMessage("");

worker.js

// self.postMessage("");

My question is why doesn't worker.postMessage("") trigger the event? If I uncomment the single line in worker.js, however, everything works fine.


回答1:


The event listener attached to worker listens for messages coming from the worker to the parent page. You need to register a listener in the worker as well.

parent.js

var worker = new Worker('worker.js');

worker.addEventListener('message', function (e) {
  console.log(e.data);
});

worker.postMessage('marco');

worker.js

self.addEventListener('message', function (e) {
  self.postMessage(e.data + ' polo');
});


来源:https://stackoverflow.com/questions/14328826/javascript-web-workers-why-do-i-need-to-postmessage-twice-to-trigger-event

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!