0

我在 nodejs 中使用 worker_threads 模块。

但是工人不能执行承诺代码。

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));
4

0 回答 0