HTML5 Messaging API以及使用Web worker时的消息顺序

时间:2013-01-11 00:39:55

标签: html5 web-worker

在一个简单的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>

worker.js:

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

我没有得到的一件事是显示消息的顺序! 它首先显示这个: enter image description here 然后显示这个 enter image description here

但为什么呢?我很困惑这些处理程序是如何以及何时被调用的?首先是worker.postMessage(“message 3,”);触发worker.postMessage(“message 3,”);在worker.js和postMessage中(“message 0,”+ event.data); in返回触发主脚本中的worker.onmessage = function(event)!然后在postMessage的最后(“消息1,”);来自worker.js触发主脚本的onmessage(index.html)。我们可以说我们对工作人员的任何postMessage调用都会触发其他网络工作者的onmessage函数吗?

1 个答案:

答案 0 :(得分:1)

您可能会将Web Worker实现与js方法混淆,您可以将这些对象作为函数传递。 HTML5中的WEB WORKERS正在为THE JREASING带来JAVASCRIPT。

原因似乎是在'.onmessage'的附加事件中,而您的worker.js以发布的表达式'postMessage(“message 0,”+ event.data);'开头。 。由于这个原因,message 0首先出现。

如下所示的好的入门教程应该解决您的问题 - THE BASICS OF WEB WORKERS