javascript - nodejs 在函数中等待 exec

标签 javascript node.js function exec

我喜欢将 nodejs 的 exec 集成到一个自定义函数中,以处理这个函数中的所有错误。

const exec = require('child_process').exec;

function os_func() {
    this.execCommand = function(cmd) {
        var ret;
        exec(cmd, (error, stdout, stderr) => {
            if (error) {
                console.error(`exec error: ${error}`);
                return;
            }
            ret = stdout;
        });
        return ret;
    }
}
var os = new os_func();

此函数返回 undefined,因为返回值时 exec 尚未完成。 我该如何解决?我可以强制函数等待 exec 吗?

最佳答案

您可以将 promise 用作:

const exec = require('child_process').exec;

function os_func() {
    this.execCommand = function (cmd) {
        return new Promise((resolve, reject)=> {
           exec(cmd, (error, stdout, stderr) => {
             if (error) {
                reject(error);
                return;
            }
            resolve(stdout)
           });
       })
   }
}
var os = new os_func();

os.execCommand('pwd').then(res=> {
    console.log("os >>>", res);
}).catch(err=> {
    console.log("os >>>", err);
})

关于javascript - nodejs 在函数中等待 exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037042/

相关文章:

不能为每个元素洗牌一次

java - 如何使用Java调用Oracle数据库中IN和OUT参数的存储函数

c# - UpdatePanel 和 RegisterStartupScript 之间有冲突吗?

javascript - 动态构建一行时,jQuery 是否多次改变 DOM?

r - 在 R 中对以函数作为参数的函数进行积分

node.js - Nodemailer 从未使用自己的 smtp 服务器收到问候语

javascript - 如何使用 javascript 最有效地从该 html 字符串中提取内容? (最高性能 = 最低毫秒)

javascript - 通过调用javascript函数在html中设置参数值

javascript - 为什么我的 url 在使用 angular 时包含 "!"?

javascript - 如何使用node.js的fs.write函数?