Web Worker(消息传递机制)
- 定义:是为了在浏览器中提供多线程支持,允许 JavaScript 在后台线程运行,而不阻塞主线程。它非常适合执行耗时的计算任务或处理大量数据,避免主线程(通常是 UI 线程)被阻塞,从而保证用户界面的流畅性。
- 应用:运行后台任务,执行长时间运行的计算或操作,诸如图像处理、文件处理、大数据分析等。它并不直接与网络通信或实时消息传递相关。
- 原理:创建Web Worker分配一个新的线程(即后台线程),它一个独立的执行上下文,和主线程相互隔离,且不能直接操作 DOM 或访问主线程中的变量,它和主线程之间的通信是异步的,通常是通过
postMessage
和onmessage
方法进行数据传输。// 创建一个 Worker const worker = new Worker('worker.js'); // 发送消息到 Worker worker.postMessage({ type: 'start', data: 1000 }); // 1000ms 的间隔 // 接收 Worker 返回的消息 worker.onmessage = (event) => { console.log(event.data); // 输出 Worker 返回的数据 }; // 停止 Worker worker.postMessage({ type: 'stop' });
应用计时器:
// worker.js
let setIntervaler = null
let count = 0
// 启动定时器
function start(timeout) {
setIntervaler = setInterval(() => {
postMessage({
type: 'next'