2013-03-20 31 views
2

我试图将此函数的输出返回到要在另一个函数中使用的变量,但该变量返回为undefined。我究竟做错了什么?将产生stdout结果作为字符串变量存储在Node.js中

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); 
+0

你有什么问题? – 2013-03-20 05:49:54

+0

很抱歉更新了我的问题。我的问题是,变量保持未定义的状态。 – 2013-03-20 05:52:08

回答

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); 
}); 
相关问题