Web Worker

Web Worker 为 Web 内容在后台线程中运行脚本提供了一种简单的方法,线程可以执行任务而不干扰用户界面。

它有以下特点:

  • 异步多线程 在主线程运行的同时,Worker 线程在后台运行,两者互不干扰
  • 同源限制 分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源,Worker 也仅能被生成它的脚本所使用
  • DOM 限制 Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用 documentwindowparent 这些对象。但是,Worker 线程可以访问 navigatorlocation 对象,可以使用大量 window 对象之下的东西,包括 WebSockets , IndexedDB
  • message通信机制 Worker 线程和主线程间的数据传递通过这样的消息机制进行——双方都使用 postMessage() 方法发送各自的消息,使用 onmessage 事件处理函数来响应消息
  • 支持web IO Worker 线程可以使用 XMLHttpRequest 进行网络I/O

阅读更多