Node.js:编写一个函数以将 spawn stdout 作为字符串返回 [英] Node.js: Writing a function to return spawn stdout as a string

查看:116
本文介绍了Node.js:编写一个函数以将 spawn stdout 作为字符串返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将此函数的输出作为字符串返回,但它一直以未定义的形式返回.我哪里出错了?

I'm trying to return the output of this function as a string, but it keeps returning as undefined. Where am I going wrong?

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 语句后立即返回.close 事件回调中的 return 语句无处返回.return 属于事件回调,不属于 run().

Your function returns immediately after command.on statement. The return statement in your callback for the close event is returned to nowhere. The return belongs to event callback, not to run().

console.log 调用而不是返回结果.

一般来说,你应该这样写:

Generally speaking you should write something like:

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) });

这篇关于Node.js:编写一个函数以将 spawn stdout 作为字符串返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆