前端知库

Web Worker 可以解决哪些主线程卡顿?

参考答案

Worker 在独立的执行上下文中运行脚本,适合解析大数据、计算、压缩等可与 DOM 分离的工作。普通 Worker 不能直接操作页面 DOM,需要通过消息把结果交回主线程。

postMessage 通常使用结构化克隆传递数据;对于可转移对象,可以转移所有权以减少复制成本,转移后发送方不能再按原方式使用该资源。共享内存则有独立的安全与同步要求。

Worker 创建、通信和数据复制都有成本,小计算不一定值得迁移。应明确任务取消、错误处理和销毁时机。主线程仍需负责渲染,因此把计算移走并不能自动解决大量 DOM 布局或绘制带来的卡顿。