不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻。
web worker in the same js file 进入全屏
line

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
});
趣店(原趣分期)技术学院
重点关注技术架构、服务化、优秀工具、自动化平台、开发全流程一体化解决方案、新人培养、工程师进阶之道等方面
这里环境优雅、氛围年轻、主要是福利还多,还等什么?我们敞开技术的大门,欢迎各种工程师加入!

评论区域

line