Web Worker 多线程

Web Worker作用

Web Worker 的目的就是为了给 Javascript 创建多线程的环境,允许主线程创建多线程,将一些任务交给别的线程执行。在主线程运行的同时,其他多线程在后台运行,两者互不干扰。使用 postMessage() 可以将数据在主线程和子线程之间进行传输。这样的好处是,一些计算量大的任务,被子线程负担了,不会影响主线程(通常负责UI交互)的加载,页面就会很流畅,不会被阻塞。

子线程一旦创建成功,就会始终运行,不会被主线程上的活动(比如用户点击按钮、提交表单)打断。导致子线程比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。

Worker 使用

1、在主线程中,新建一个子线程

var work=new Worker("./a.js");

2、主线程可以使用postMessage(),将数据传递给子线程

work.postMessage("aaa");

3、主线程中添加子线程侦听事件message,用来接收子线程返回的数据

 work.addEventListener("message",messageHandler);
 function messageHandler(e){
 	console.log(e);//打印结果如下
 	work.terminate();//任务完成后,关闭子线程
 }

Web Worker
4、创建子线程文件,添加侦听事件message,用来接收主线程返回的数据

 this.addEventListener("message",messageHandler);
 function messageHandler(e){
 	console.log(e.data);
 }

5、子线程中使用postMessage(),将数据传递给主线程

var i=0;
getCount();
function getSum(){
    i++;
    postMessage(i);
    this.close();//执行完成后,关闭自身
}
setTimeout(getSum,2000);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值