Web Worker
就 JavaScript 而言,您通常只能在主线程上执行工作,但这只是默认操作。可以在 JavaScript 中注册和使用其他线程。允许在 JavaScript 中实现多线程的功能称为 Web Workers API。
Web Worker 的限制
Web Worker 受到以下限制条件的约束:
- Web Worker 无法直接访问 DOM。
- Web Worker 可以通过消息传递流水线与 window 上下文进行通信,这意味着 Web Worker 可以通过某种方式间接访问 DOM。
- Web Worker 的作用域是 self,而不是 window。
- Web Worker 范围确实可以访问 JavaScript 基元和构造,以及 fetch 等
基本使用
启动、通信
// Creates the web worker:
const myWebWorker = new Worker('/js/my-web-worker.js');
// Adds an event listener on the web worker instance that listens for messages:
myWebWorker.addEventListener("message", ({ data }) => {
// Echoes "Hello, window!" to the console from the worker.
console.log(data);
});
// my-web-worker.js
self.addEventListener("message", () => {
// Sends a message of "Hellow, window!" from the web worker:
self.postMessage("Hello, window!");
});
使用场景
- 预取数据
- 处理加密
demo
todo
...