webwork

代码结构,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都是异步通讯,原理也就类似。。

原文地址:https://www.cnblogs.com/chenluomenggongzi/p/6108288.html