如何处理异步/等待格式的多个回调函数参数?

时间:2019-05-13 16:18:02

标签: javascript node.js callback async-await try-catch

在shelljs中,exec函数在回调(err, stdout, stderr)中具有3个参数。在async/await的{​​{1}}中使用它时,我无法捕捉到promisify(shelljs.exec)

stderr

如果shelljs exec返回代码0,即有效响应,则可以正常工作,但是当命令无效时,它将返回1。

我无法获得const { promisify } = require('util'), shellExec = promisify(shelljs.exec); .... // in the function try { variableName = await shellExec('some valid shell command', {}); return variableName; } catch (err) { console.log(err); }

1 个答案:

答案 0 :(得分:0)

我假设您希望同时使用async / await时输出stderr的值。像这样的东西可能有用:

var shelljs = require('shelljs');

async function promiseExec(input) {
  return new Promise((resolve, reject) => {
    let { err, stdout, stderr } = shelljs.exec(input);
    shelljs.exit(1);
    if(stdout === "") reject(stderr);
    resolve(stdout);
  })
}

async function main () {
  let result = await promiseExec('dir');
  console.log(result);
}

main();