worker 将属性onmessage设置为一个函数,当worker对象调用 postMessage()时该函数会接收到发送过来的信息。(注意,这么使用并不等同于定义一个同名的全局变量,或是定义一个同名的函数。var onmessage 与 function onmessage 将会定义与该名字相同的全局属性,但是它们不会注册能够接收从创建 worker 的网页发送过来的消息的函数。) 这会启用递归,生成自己的新拷贝来处理计算的每一个循环。
fibonacci.html
Test threads fibonacci); worker.onmessage = function(event) { document.getElementById( event.data; dump(); }; worker.onerror = function(error) { dump(); throw error; }; worker.postMessage();
网页创建了一个div元素,ID为result,用它来显示运算结果,然后生成worker。在生成worker后,onmessage处理函数配置为通过设置div元素的内容来显示运算结果,最后,向worker发送一条信息来启动它。
注意:chrome下不支持在worker中创建worker、以及dump方法、所以上述代码可以在Firefox下运行。由于文章篇幅过长,关于共享线程shared web worker的介绍将在下篇文章发布。