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
});
阿里巴巴-钉钉-开放平台,能力开放&开发者运营岗位招聘中, 期待你的加入!
钉钉开放,让应用开发更简单
充分开放,是钉钉的重要方向!除致力于为开发者打造丰富的开放API, 更易接入的场景化能力包, 完备的应用开发工具之外, 还需要持续构建开放能力的布道、开发者生态运营体系,包括培训、沙龙、大会、社区合作等等。业务在快速发展,我们也还需要更多优秀的小伙伴加入!

评论区域

line