在一个简单的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,");
我没有得到的一件事是显示消息的顺序! 它首先显示这个: 然后显示这个
但为什么呢?我很困惑这些处理程序是如何以及何时被调用的?首先是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函数吗?
答案 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。