我在 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));