2

在一个简单的 HTML5 web worker 项目中,我定义了一个使用 HTML5 消息 API 交换消息的 web worker。由于我们已经定义了两个 .onmessage 处理程序(回调函数),一个在主脚本中,另一个在 worker.js: index.html 中,因此我在这里感到困惑:

<!DOCTYPE html>
<html>
<body>
<script>
var worker = new Worker("worker.js");
worker.onmessage = function(event) {
    alert("Reply from index.html:"+event.data);
}
worker.postMessage("message 3,");
</script>
</body>
</html>

工人.js:

this.onmessage = function(event) {
    postMessage("message 0,"+event.data);
} 
postMessage("message 1,");

我不明白的一件事是显示消息的顺序!它首先显示这个: 在此处输入图像描述 然后显示这个 在此处输入图像描述

但为什么?我很困惑如何以及何时调用这些处理程序?首先是worker.postMessage("message 3,"); 触发 worker.postMessage("message 3,"); 在 worker.js 和 postMessage("message 0,"+event.data); in return 触发主脚本中的 worker.onmessage = function(event) !然后在最后 postMessage("message 1,"); 从worker.js 触发主脚本(index.html)的onmessage。我们可以说我们对一个worker的任何postMessage调用都会触发其他webworker的onmessage函数吗?

4

1 回答 1

1

您可能会将 Web Worker 实现与您可能将对象作为函数传递的 js 方法混淆。HTML5 中的 WEB Worker 正在将线程引入 JAVASCRIPT。

原因似乎在 '.onmessage' 的附加事件中,并且您worker.js 从发布的表达式 'postMessage("message 0,"+event.data);' 开始 . 由于message 0这个原因,它排在第一位。

像下面这样的一个很好的介绍性教程应该可以解决您的顾虑 -网络工作者的基础知识

于 2013-01-11T00:55:34.423 回答