首页 > 解决方案 > Web Worker 的问题

问题描述

我有一个需要使用 Worker 进行繁重工作的 React 应用程序。如果我做一个简单的任务,它通常是“postMessage”,但如果这是我真正想要发生的任务,工人似乎甚至没有被调用!

----- 工作测试: -----

onmessage = function(e){
    postMessage("oi");
};

呼叫者,召集者:

    useEffect(() => {
    function startGenerationKeys() {
        const worker = new Worker('jobs/KeysPair.js');
        worker.postMessage("start");
        worker.onmessage = function(e) {
            console.log(e.data);
        }
    }
    startGenerationKeys();
}, []);

----- 真正的工人: -----

import NodeRSA from 'node-rsa';

onmessage = function(e){
    const keysPair = new NodeRSA({ b: 4096 });
    const pubKey = keysPair.exportKey('public').replace(/(\r\n|\n|\r)/gm,"");
    const privKey = keysPair.exportKey('private');
    postMessage({
        pubKey,
        privKey
    });
};

呼叫者,召集者:

    useEffect(() => {
    function startGenerationKeys() {
        const worker = new Worker('jobs/KeysPair.js', {type: 'module'});
        worker.postMessage("start");
        worker.onmessage = function(e) {
            console.log(e.data);
        }
    }
    startGenerationKeys();
}, []);

https://i.ibb.co/dmRHqxN/recording.gif

标签: node.jsworker

解决方案


推荐阅读