Ответ 1
Ваша функция возвращается сразу после оператора command.on
. Оператор return
в вашем обратном вызове для события close
возвращается в никуда. return
относится к обратному вызову события, а не к run()
.
Поместите вызов 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) });