worker_threads 无法在 Nodejs 中执行 Promise

问题描述

我在 nodejs 中使用 worker_threads 模块。

但是worker不能执行Promise代码

DataCloneError: # 无法克隆。发生。

如何执行异步代码

//main.js
const res = await Promise.all(
     array.map((i) =>
        startWorker(`${__dirname}/dictWorker.js`,i)
      )
    );

function startWorker(dir,value) {
  return new Promise((resolve,reject) => {
    try {
      const worker = new Worker(dir,{
        workerData: { value: value },});
      worker.once("message",(result) => {
        console.log(result);
        resolve(result);
      });
    } catch (error) {
      reject(error);
    }
  });
}

//worker.js
const { workerData,parentPort } = require("worker_threads");

async function job(arr) {
  try {
    const _sleep = (delay) =>
      new Promise((resolve) => setTimeout(resolve,delay));
    await _sleep(2000);
    return true;
  } catch (error) {
    throw new Error(error.message);
  }
}

parentPort.postMessage(job(workerData.value));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)