Search K
Appearance
Appearance
node 架构
两种方式
main.js
const { fork } = require("child_process");
const path = require("path");
// 假设你有 4 个子任务
const numTasks = 4;
const results = [];
let completedTasks = 0;
for (let i = 0; i < numTasks; i++) {
// 使用 fork 方法创建子进程
const child = fork(path.join(__dirname, "worker.js"));
// 发送任务到子进程
child.send({ task: `Task ${i + 1}` });
// 监听子进程的结果
child.on("message", (result) => {
results.push(result);
completedTasks++;
// 检查是否所有子任务都完成了
if (completedTasks === numTasks) {
console.log("所有任务完成。汇总结果:", results);
}
});
// 处理子进程错误
child.on("error", (err) => {
console.error("子进程出错:", err);
});
}
worker.js
process.on("message", (message) => {
// 模拟计算任务
const result = `结果: 计算 ${message.task}`;
// 返回结果到主进程
process.send(result);
});