代码结构,html页面引入两个js文件,work.js和main.js
work.js
1 (function () { 2 onmessage = function (e) { 3 var num = e.data; 4 var result = 0; 5 for (var i = 0; i < num.length; i++) { 6 result += i; 7 } 8 postMessage(result); 9 }; 10 })();
main.js
1 (function () { 2 var work=new Worker("work.js"); 3 work.postMessage("ab"); 4 work.onmessage=function (e) { 5 console.log(e.data); 6 } 7 })();
效果:控制台输出 1
原理解释:
首先main中引入一个js文件,并向其发送数据(postMessage),目标文件获取数据(onmessage),(数据保存在e.data里),处理数据后又把数据返回给主函数(postMessage),主函数通过(onmessage),又获取到了它传送来的数据,并输出。。
总归,多线程,不同线程不停的进行数据来往。webwork,分别通过onmessage和postMessage来回传递数据,从而实现了多线程。
题外话,这个类似node下的get和post方法下的req和res,毕竟node和webwork都是异步通讯,原理也就类似。。