0

我希望有人可以帮助我解决我的问题,以从这个函数中取回拒绝值:

        (async () => {
            await queue.add(() => startCompare(orgpath, dpath, xray));
            console.log('done compare ' + entry);
        })();

这调用函数:

async function startCompare(orgFile, compFile, xFile)
{
    let gstderr;

    return new Promise((resolve, reject) => {
        spawn('compare', [orgFile, compFile, '-metric', 'AE', 'null:'])
            .progress(function (childProcess) {

                childProcess.stdout.on('data', function (data) {
                    console.log('[spawn] stdout: ', data.toString());
                });
                childProcess.stderr.on('data', function (data) {
                    gstderr =  data.toString();
                    console.log('[spawn] stderr: ', data.toString());
                });

            }).then(res => {

                resolve(true);

            }).catch(error => {

                resolve(gstderr);

            });
    });
}

我的目标是在被拒绝时如何取回 gstderr 值。也许箭头功能是错误的方式?我想在以下位置打印值:console.log('done compare ' + entry + xxxxx);其中 xxxxx 是被拒绝的值。

4

1 回答 1

0

async/await您可以使用如下方式捕获 Promise 的拒绝值try/catch


(async () => {
  try {
    // if it gets resolved lands here
    const result = await startCompare(...args)
    console.log(result) // should be true

  } catch(error) {
   // if it gets rejected it lands here
   console.log(error) // should be the gstderr
  }
})()

希望能帮助到你!

于 2019-12-11T20:08:47.667 回答