Как обрабатывать несколько аргументов функции обратного вызова в формате async / await? - PullRequest
0 голосов
/ 13 мая 2019

В shelljs функция exec имеет 3 аргумента в обратном вызове (err, stdout, stderr).При использовании этого в async/await по promisify(shelljs.exec) я не могу поймать stderr?

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

Если shelljs exec возвращает код 0, то есть действительный ответ, он работает нормально, но когдакоманда недействительна, она возвращает 1.

Я не могу получить stderr.

1 Ответ

0 голосов
/ 13 мая 2019

Я предполагаю, что вы хотите, чтобы значение stderr выводилось при использовании async / await. Нечто подобное может пригодиться:

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();
...