Node.js:编写一个函数以将 spawn stdout 作为字符串返回 [英] Node.js: Writing a function to return spawn stdout as a string
本文介绍了Node.js:编写一个函数以将 spawn stdout 作为字符串返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图将此函数的输出作为字符串返回,但它一直以未定义的形式返回.我哪里出错了?
I'm trying to return the output of this function as a string, but it keeps returning as undefined. Where am I going wrong?
function run(cmd){
var spawn = require('child_process').spawn;
var command = spawn(cmd);
var result = '';
command.stdout.on('data', function(data) {
result += data.toString();
});
command.on('close', function(code) {
return result;
});
}
console.log(run('ls'));
推荐答案
你的函数在 command.on
语句后立即返回.close
事件回调中的 return
语句无处返回.return
属于事件回调,不属于 run()
.
Your function returns immediately after command.on
statement. The return
statement in your callback for the close
event is returned to nowhere. The return
belongs to event callback, not to run()
.
把console.log
调用而不是返回结果
.
一般来说,你应该这样写:
Generally speaking you should write something like:
function run(cmd, callback) {
var spawn = require('child_process').spawn;
var command = spawn(cmd);
var result = '';
command.stdout.on('data', function(data) {
result += data.toString();
});
command.on('close', function(code) {
return callback(result);
});
}
run("ls", function(result) { console.log(result) });
这篇关于Node.js:编写一个函数以将 spawn stdout 作为字符串返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文