繁体   English   中英

您如何在Javascript中正确链接Promise,并考虑错误处理?

[英]How do you properly chain promises in Javascript, and account for error handling?

我在理解Javascript承诺时遇到了一些麻烦,特别是将它们链接起来并将错误传递到整个链上。 在下面的代码中:

function myPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log('done')
      reject('resolved');
    }, 1000);
  });
}

function myOtherPromise() {
  return new Promise((resolve, reject) => {
    myPromise().then(done => {
      resolve(done);
    }).catch(e => {
      console.log('In myOtherPromise, caught err: ', e);
      reject(e)
    });
  });
}

myOtherPromise().then(done => {
  console.log('done calling myOtherPromise: ', done);
}).catch(e => {
  console.log('caught err from myOtherPromise', err);
});

输出显示:

done
In myOtherPromise, caught err:  resolved

我不明白为什么未打印以下内容:

'caught err from myOtherPromise'

我觉得有些根本性的东西我还不太了解。 为什么myOtherPromise的拒绝不传递到最终的catch块?

您将错误捕获到e变量中,但输出err变量(未定义并导致运行时错误)。

.catch(e => {
  console.log('caught err from myOtherPromise', err);
})

应该:

.catch(e => {
  console.log('caught err from myOtherPromise', e);
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM