web worker in the same js file 进入全屏
new Worker('/path/to/worker.js')
这种形式比较麻烦,需要将worker代码单独抽出来放到一个文件中,再引进来。
在开发FeHelper的过程中有比较耗时的操作,需要用Web Worker
来实现,我用的方法是:
new Worker(URL.createObjectURL...)
具体Demo:
// 用Web Worker做任何你想做的事儿
let WebWorkerDemo = () => {
// 实际的Worker处理器:Demo
let workerDealer = (a, b) => {
return Math.pow(a, b);
};
// 监听
self.addEventListener('message', event => {
// 获取数据
let result = workerDealer(event.data.a, event.data.b);
// 把数据传递出去
self.postMessage(result);
});
};
// 直接用 URL.createObjectURL 的方式创建Worker,不用做文件拆分再引外部文件(麻烦)
let worker = new Worker(URL.createObjectURL(new Blob(["(" + WebWorkerDemo.toString() + ")()"], {type: 'text/javascript'})));
// Web Worker处理过的结果,在这里监听
worker.addEventListener('message', event => {
console.log('Web Worker处理后的结果:', event.data);
});
// 发送数据,请求执行
worker.postMessage({
a: 123456,
b: 3
});