我试图以字符串形式返回此函数的输出,但它始终以未定义的形式返回。我要去哪里错了?
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语句后立即返回。事件return回调中的语句将close返回无处。在return所属的事件的回调,而不是run()。
command.on
return
close
run()
放console.log电话代替return result。
console.log
return result
一般来说,您应该编写如下内容:
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) });