当前位置:   article > 正文

前端提高篇(七十七):worker多线程_worker线程最大同时激活数

worker线程最大同时激活数

js是单线程的,防止同时操作dom元素,造成页面混乱
引入worker多线程,也是不允许同时多线程操作同一个dom元素的

应用场景
大型数据运算、计时器、异步请求、访问navigator部分属性、js核心对象

局限性
1.不能跨域加载(可以放到服务器下)
2.worker文件不能访问DOM

worker使用
主线程文件:在index.html中

var worker = new Worker('worker.js');
worker.postMessage(10);//将复杂计算交给子线程
worker.onmessage = function(e){
    console.log(e.data);//接收子线程返回来的数据
}
  • 1
  • 2
  • 3
  • 4
  • 5

子线程文件:在worker.js文件

/*
 * 响应主线程发过来的数据进行处理
 */
onmessage = function(e){
    var num = e.data;//接收从主线程传过来的值

    num += 10000;//假设做了一系列酷炫拽高难度计算工作
    
    postMessage(num);//把计算结果传回给主线程
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

index.html运行结果,输出:10010

结束worker
1.close()在worker.js文件中使用
2.terminate()在worker对象上调用(worker.terminate)

当子线程工作完成,需要断开主线程与子线程之间的连接:
close()方法是由子线程自发断开;而terminate()方法是主线程断开连接

如果子线程在一开始就调用close方法,主线程发送数据,子线程是接收不到的,比如这样:
在这里插入图片描述
拒绝小心心
在这里插入图片描述


如果主线程使用子线程,用着用着不用了,类似这样
在这里插入图片描述
后面传20的操作就不会有了,只会输出10010(10000+10),没有10020(10000+20)了


在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/236986
推荐阅读
相关标签
  

闽ICP备14008679号