一尘不染

Node.js:编写一个函数以将spawn 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;
    });
}
console.log(run('ls'));

阅读 745

收藏
2020-07-07

共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) });
2020-07-07