Node.js 为什么在fork上处理来自数据处理器的消息总是空的
计算需要花费很多时间,因此我使用了fork过程,面对来自数据处理器的消息的困难,我需要发送我的计算值作为响应,但是为什么总是将声明的变量totalSum设为空白。检查以下语法 app.jsNode.js 为什么在fork上处理来自数据处理器的消息总是空的,node.js,fork,Node.js,Fork,计算需要花费很多时间,因此我使用了fork过程,面对来自数据处理器的消息的困难,我需要发送我的计算值作为响应,但是为什么总是将声明的变量totalSum设为空白。检查以下语法 app.js const cluster = require("cluster"); const { fork } = require("child_process"); const path = require("path");
const cluster = require("cluster");
const { fork } = require("child_process");
const path = require("path");
exports.get_company_total_sum = async (req, res, next) => {
try {
const { hs_object_id: companyId, hs_parent_company_id } = req.query;
//const companyId = hs_object_id;
console.log("hs_object_id", companyId);
const processPath = path.join(
__dirname,
"..",
"9-services",
"tierone_carrier_dataProcess.js"
);
let totalSum = "";
const child = fork(processPath);
child.send({ companyId });
//process the messages coming from the task processor
child.on("message", (response) => {
console.log("response::", response.result);
//return res.json({ message: response.message });
totalSum = response.result;
});
//remove previously openned node instance when we finished
child.on("close", function (msg) {
this.kill();
});
return res.json({ "total sum": totalSum });
};
process.on("message", (payload) => {
if (payload.companyId !== "") {
const sum = longComputation(payload);
process.send({ result: sum });
process.disconnect();
}
});
function longComputation(payload) {
let sum = 0;
for (let i = 0; i < payload.companyId; i++) {
sum += i;
}
return sum;
}
process.on("uncaughtException", function (err) {
console.log("Error happened: " + err.message + "\n" + err.stack + ".\n");
console.log("Gracefully finish the routine.");
});
tierone\u carrier\u dataProcess.js
const cluster = require("cluster");
const { fork } = require("child_process");
const path = require("path");
exports.get_company_total_sum = async (req, res, next) => {
try {
const { hs_object_id: companyId, hs_parent_company_id } = req.query;
//const companyId = hs_object_id;
console.log("hs_object_id", companyId);
const processPath = path.join(
__dirname,
"..",
"9-services",
"tierone_carrier_dataProcess.js"
);
let totalSum = "";
const child = fork(processPath);
child.send({ companyId });
//process the messages coming from the task processor
child.on("message", (response) => {
console.log("response::", response.result);
//return res.json({ message: response.message });
totalSum = response.result;
});
//remove previously openned node instance when we finished
child.on("close", function (msg) {
this.kill();
});
return res.json({ "total sum": totalSum });
};
process.on("message", (payload) => {
if (payload.companyId !== "") {
const sum = longComputation(payload);
process.send({ result: sum });
process.disconnect();
}
});
function longComputation(payload) {
let sum = 0;
for (let i = 0; i < payload.companyId; i++) {
sum += i;
}
return sum;
}
process.on("uncaughtException", function (err) {
console.log("Error happened: " + err.message + "\n" + err.stack + ".\n");
console.log("Gracefully finish the routine.");
});
process.on(“消息”(payload)=>{
如果(payload.companyId!==“”){
const sum=长计算(有效载荷);
send({result:sum});
process.disconnect();
}
});
功能计算(有效载荷){
设和=0;
for(设i=0;i