web worker基本使用

前言

js是单线程 即所有任务只能在一个线程中完成。
Web Worker是为js创造多线程环境 
Worker 线程一旦新建成功,就会始终运行,
不会被主线程上的活动(比如用户点击按钮、提交表单)打断。
这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,
不应该过度使用,而且一旦使用完毕,就应该关闭

基本用法

主线程中new的方式调用Worker()构造函数,
新建一个 Worker 线程并传入线程文件地址
var worker = new Worker('work.js');

通过postMessage向子线程发送数据
通过监听message事件接收子线程发回来的消息
worket.postMessage({name:'jn'})
worker.addEventListener('message',function(e){
    ...e.data
})
worker完成任务后 主线程需要将其关闭
worker.terminate();

worker.js:
    子线程中一样的监听message事件 获取信息,
    通过postMessage发送信息
    this.addEventListener('message',function(e){
        ...e.data
        
        this.postMessage({result:111})
    })
    
    子线程中可使用self代表当前子线程 
    等同于上面的this
        self.addEventListener('message',function(e){
            ...
        })
        
子线程内也可关闭线程 
self.close()

子线程中通过importScripts引入其他脚本
    importScripts('./a.js')

错误监听

主线程中可监听错误事件
worker.addEventListener('error',function(e){
    
})
http://www.ruanyifeng.com/blog/2018/07/web-worker.html
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 夜莺2517阅读 128,433评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 7,741评论 1 6
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 9,078评论 28 54
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,875评论 2 9

友情链接更多精彩内容