将生成的stdout结果存储为Node.js中的字符串变量

时间:2013-03-20 05:49:12

标签: node.js

我正在尝试将此函数的输出返回到另一个函数中使用的变量中,但该变量返回为undefined。我做错了什么?

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;
      });
}
var message = run("ls");
sendMessage(user, message);

1 个答案:

答案 0 :(得分:4)

您的run函数是异步的(因为spawn是)。传递结果的最简单方法是提供一个回调函数,当结果出现时调用该函数:

function run(cmd, cb) {
  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) {
    cb(result);
  });
}
run("ls", function(message) {
  sendMessage(user, message);
});