Web工人?

Web工人?

众所周知,javascript是单线程语言(为什么)。web worker可以在后台开启浏览器除GUI渲染线程、JS引擎线程、事件处理线程、定时器线程以及HTTP请求线程的新的线程,新的线程在后台进行相应的逻辑处理后再传回到主线程。这对于包含大量可能影响页面加载的计算代码的意义非常大。

专用worker实现方法

要点:

  1. worker的处理逻辑在一个专用的js编辑,数据的传递postmessage和接收onmessage使用方法类似方法

  2. worker的实例化,例iWorker,使用new Worker('上述.js')

  3. 主线程数据的传递postmessage和接收onmessage都得挂载到worker的实例化对象iWorker

  4. 参数是一个数组,数据的获取方法e.data[0]...

如何立即关闭worker?

主线程中使用iWorker.terminate(),或者在worker.js中调用方法close()

注意点

web worker仍然是比较新的API,所以不管是主线程还是worker.js中都最好检查Worker是否定义。如下:

if(Worker){...}else{...}

20-03-12------------

SharedWorker今天尝试的时候碰到一个坑,在worker.js中不要加上述的if-else验证,否则worker无效。

参考链接

https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者:阮一峰www.ruanyifeng.com/blog/2018/07/web-worker.html 概述 ...
    grain先森阅读 1,165评论 0 1
  • 介绍web worker HTML5提供得,运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能...
    带刀打天下阅读 1,474评论 0 3
  • 一、概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。...
    零星小雨_c84a阅读 2,584评论 0 2
  • 以前我们总说,JS是单线程没有多线程,当JS在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要...
    唐子兮阅读 872评论 0 0
  • 因为身体不舒服的原因,几乎一宿没有睡觉,等想要睡觉的时候,就已经到了开课的时间了。所以一整天,状态都不是很好。 早...
    倪梓睿阅读 182评论 0 0

友情链接更多精彩内容