javascript - HTML5 WebWorker 逻辑流程

标签 javascript html web-worker

所以我有这个主js文件:

var worker = new Worker("../Scripts/worker.js");
worker.onmessage = function (event) {
    alert("Worker said : " + event.data);
};
worker.postMessage("Naruto");
worker.postMessage("Sakura");

worker.js 在这里:

self.onmessage = function (event) {
      self.postMessage("Hi " + event.data);
};

self.postMessage("WHERE'S SASUKE? [1]");
self.postMessage("WHERE'S SASUKE? [2]");

我仍然对它们的实际工作原理感到有点困惑。但结果是这样的(按出现顺序):

Worker said: WHERE'S SASUKE? [1]
Worker said: WHERE'S SASUKE? [2]
Worker said: Hi Naruto
Worker said: Hi Sakura

他们说要启动一个工作程序,请使用 postMesage()。

第一个问题: 因此,如果我的主 js 文件 postMessage("Naruto"),为什么工作人员首先显示两个“WHERE'S SASUKE?”然后展示鸣人和小樱?不是应该先触发onMessage事件,因为它从主线程收到了数据吗?

第二个问题: 当我发布消息(“火影忍者”)时,它显示了两个“佐助在哪里?”。但为什么当我执行 postMessage("Sakura") 时,它没有显示两个“WHERE'S SASUKE?”?我的意思是,我在主线程中调用了两次 postMessage(),为什么只显示两个“WHERE'S SASUKE”?是不是应该“执行”worker.js 两次,从而看到四个“SASUKE 在哪里?”? (请赐教)

最佳答案

一些注释可以帮助您了解正在发生的事情

ma​​in.js

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

// register handler, 
// code is executed only when a message is received from worker
worker.onmessage = function (event) {
    alert("Worker said : " + event.data);
};

worker.js

// register onmessage handler , 
// code will not be executed at this point but only when you post a message
self.onmessage = function (event) {
      self.postMessage("Hi " + event.data);
};

// these are executed immediately
// they will be executed only once during the 'new Worker' part
self.postMessage("WHERE'S SASUKE? [1]");
self.postMessage("WHERE'S SASUKE? [2]");

关于javascript - HTML5 WebWorker 逻辑流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14412500/

相关文章:

javascript - 共享 worker 在重新加载页面时终止

javascript - 使用 Webworker 将 Javascript 函数作为线程调用

javascript - 我在 Angular 8 中的双向数据绑定(bind)方面遇到问题

javascript - 使用 angular/d3/css3/(?) 通过动画树状图创建体验

javascript - 没有 CSS 转换的翻转文本

javascript - 使用 AJAX 更新多个 HTML 表格行

javascript - 运行 HTML5 Web Worker 时 Google Chrome 无响应

javascript - 聚焦后的 Mozilla 聚焦

javascript - 使用 javascript 将文件附加到输入类型 ="file"

javascript - 如何为用户调整大小的 div?