我的nodejs应用程序在接收特定请求时使用spawn生成子进程(我不能使用exec作为输出很大,并且不知道我是否可以添加回调到生成的进程)来准备响应。 / p>
我希望子进程发送响应或主进程等待孩子准备响应并退出。
问题是主要过程不等孩子。
我编写了类似这样的内容
inputQuery: function(req, res){
var output="";
var query = "printjson(db.getCollectionNames())";
var temp = spawn("mongo", ["mongoweb ", "-eval", query]);
temp.on('error', function (err){
console.log(err);
});
temp.stdout.on('data', function(data){
output += data;
});
temp.stderr.on('data', function(data){
console.log(data);
});
temp.on("exit", function(code){
console.log("Output is :" + output);
res.send(output); // Either send response here or after the log message below
});
console.log("I want this to wait or let child respond");
}
我真的被困住了,不知道怎么做。请帮忙。 提前谢谢。
答案 0 :(得分:0)
我最终做的是生成一个将结果捕获到临时文件中的进程。然后在孩子完成时将消息传递给父母(基本上是一个标志)。等待此消息并在获取消息时,启动另一个进程以重复复制缓冲区并继续将stdout转储到循环中直到完成。
注意:对于大多数情况,您可以选择更改exec缓冲区的大小,这应该可以正常工作,因为它可以使它非常大。我想它可以达到1或2 MB之类的东西,但是我不确定。
很高兴有人有更好的主意!!!
@Krasimir让我知道你是如何解决它的。