保持proc.stdout.on()结果?

一般来说,我对JavaScript很陌生,尤其是在服务器端。 我正在使用node.js并具有以下代码:

var results = modulex.commandy(args) 

在哪里modulex看起来像:

 export.commandy = function(args) { var output; var pingproc = spawn('ping', ['-c 1', 'host.com']); pingproc.stdout.on('data', function (data) { output += data; }); return output; } 

如果我想要这个commandy函数从过程中返回stdout的结果,我该怎么做? 在标准输出callback被调用之前,这个commandy函数不会完成吗? 在上面的代码中, output总是未定义的

谢谢你的帮助!

问题是你在事件被触发前返回结果。 该函数将立即返回,但事件并没有发射pingproc.stdout.on('data'); 你需要使用callback。 就像是:

modulex.commandy(function(output) { /*whatever you need w/ the output here */ });

接着

 export.commandy = function(args, callback) { var output; var pingproc = spawn('ping', ['-c 1', 'host.com']); pingproc.stdout.on('data', function (data) { callback(data); }); } 

这将在每次接收数据时调用您在function(output) {}传递的function(output) {} 。 或者,您可以在收到一定数量的数据后,或者在调用结束事件后调用callback函数。