首页 > 解决方案 > 如果你在一个promise中有一个promise,你需要两个catch吗?

问题描述

例如,使用fetch()(.then() 中的第二个)进行两次调用,您需要两个.catch()还是只需要外部一个就足够了?

我试图复制,但到目前为止还不能。

b = new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log('Solving...');
    resolve('solved');
  }, 3000);
})
  .then(() => {
    new Promise((resolve, reject) => {
      setTimeout(() => {
        console.log('Rejecting...');
        reject('error');
      }, 1000);
    })
      .then(() => null)
      .catch((error) => {
        console.log('Catching error inside.');
        console.log(error);
      });
  })
  .catch((error) => {
    console.log('Catching error outside.');
    console.log(error);
  });

这有效,但如果我删除内部catch()我会得到Unhandled promise rejection错误

Solving...
Rejecting...
(node:73650) UnhandledPromiseRejectionWarning: error
(node:73650) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:73650) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

标签: javascriptfetches6-promise

解决方案


无需多次 catch()。如果检测到任何错误,则转到 catch()


推荐阅读