WebWorker是什么?

311 阅读1分钟

Javascript脚本语言是一个单线程语言,但是如果在唯一的主线程中有太多的任务要做,就有可能会任务阻塞影响UI交互渲染。所以WebWorker创建一个Worker线程,一些高延迟的任务可以由worker负责。等Worker线程完成任务再把结果返回给主进程。主线程主要负责UI交互,不会被阻塞或者延迟。

WebWorker的兼容性如下:

新建一个Worker:

var worker = new Worker('work.js');


原因在于chrome不允许通过本地文件访问使用Web Worker,所以需要部署在localhost或者服务器上。所以我们直接在页面内部嵌入Worker。将内嵌Worker转成一个二进制对象,将二进制对象生成url,让Worker加载url。Worker进程传输一个字符串‘workerMsg’给主进程。


  • Worker.onerror:指定 error 事件的监听函数。
  • Worker.onmessage:指定 message 事件的监听函数,发送过来的数据在Event.data属性中。
  • Worker.onmessageerror:指定 messageerror 事件的监听函数。发送的数据无法序列化成字符串时,会触发这个事件。
  • Worker.postMessage():向 Worker 线程发送消息。
  • Worker.terminate():立即终止 Worker 线程。

综上,WebWorker是一个让Javascript变为多进程的API,Wroker进程是主进程的一个子进程。