还没使用过Web Worker,推荐一款开源工具Workerize,快速上手
开源项目:https://github.com/developit/workerize
将模块移动到 Web 辅助角色中,自动将导出的函数反映为异步代理。
- 将一个小型、专门构建的 RPC 实现捆绑到应用中
- 如果导出的模块方法已异步,则签名保持不变
- 支持同步和异步工作函数
- 与异步/等待效果优美
- 只有800 字节的 gzipped ES3
Web Worker的最大好处之一就是,执行代码额外开启线程,不会阻塞当前页面的渲染和代码执行,开启了浏览器端的多线程执行。
安装
npm install --save workerize
使用
传递包含代码的函数或字符串。
worker.js:
let worker = workerize(`
export function add(a, b) {
// block for half a second to demonstrate asynchronicity
let start = Date.now();
while (Date.now()-start < 500);
return a + b;
}
`);
(async () => {
console.log('3 + 9 = ', await worker.add(3, 9));
console.log('1 + 2 = ', await worker.add(1, 2));
})();
许可证