保持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函数。