微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

worker_threads 无法在 Nodejs 中执行 Promise

如何解决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 举报,一经查实,本站将立刻删除。