Web Worker
Web Worker 为 Web 内容在后台线程中运行脚本提供了一种简单的方法,线程可以执行任务而不干扰用户界面。
它有以下特点:
- 异步多线程 在主线程运行的同时,Worker 线程在后台运行,两者互不干扰
- 同源限制 分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源,Worker 也仅能被生成它的脚本所使用
- DOM 限制 Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用
document
、window
、parent
这些对象。但是,Worker 线程可以访问navigator
和location
对象,可以使用大量 window 对象之下的东西,包括 WebSockets , IndexedDB - message通信机制 Worker 线程和主线程间的数据传递通过这样的消息机制进行——双方都使用
postMessage()
方法发送各自的消息,使用onmessage
事件处理函数来响应消息 - 支持web IO Worker 线程可以使用 XMLHttpRequest 进行网络I/O