一.什么是Web Worker

  Web Worker 的作用,就是为 JavaScript 发明多线程环境,容许主线程创立 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后盾运行,两者互不烦扰。等到 Worker 线程实现计算工作,再把后果返回给主线程。这样的益处是,一些计算密集型或高提早的工作,被 Worker 线程累赘了,主线程(通常负责 UI 交互)就会很晦涩,不会被阻塞或拖慢。

  Worker 线程一旦新建胜利,就会始终运行,不会被主线程上的流动(比方用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。然而,这也造成了 Worker 比拟消耗资源,不应该适度应用,而且一旦应用结束,就应该敞开。

Web Worker 有以下几个应用留神点:

(1)同源限度

调配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源。

(2)DOM 限度

Worker 线程所在的全局对象,与主线程不一样,无奈读取主线程所在网页的 DOM 对象,也无奈应用documentwindowparent 这些对象。然而,Worker 线程能够navigator对象和location对象。

(3)通信联系

Worker 线程和主线程不在同一个上下文环境,它们不能间接通信,必须通过音讯实现。

(4)脚本限度

Worker 线程不能执行alert()办法和confirm()办法,但能够应用 XMLHttpRequest 对象收回 AJAX 申请。

(5)文件限度

Worker 线程无奈读取本地文件,即不能关上本机的文件系统(file://),它所加载的脚本,必须来自网络。

二.根本用法