嵌套的承诺捕获未执行

时间:2018-09-26 00:47:16

标签: javascript promise

我有一个函数,该函数带有一个返回Promise的函数,我这样称呼它:

const test = (prom) => {
  prom()
  .then(() => console.log('top level then'))
  .catch(() => console.log('top level catch'));
};
test(() => new Promise(() => fetch()
  .then(() => console.log('inner level then'))
));

fetch()调用将返回错误,因为我实际上没有获取任何东西,但顶级catch却没有运行-为什么?

我要寻找的行为是,每次prom Promise解析时,顶层将运行,并且每次拒绝时,顶层catch都会运行(除了然后捕获的任何内部级别) 。

1 个答案:

答案 0 :(得分:0)

这是因为您的新承诺不会解决或拒绝任何事情。

test(() => new Promise((resolve, reject) => fetch()
  .then(() => {
    console.log('inner level then');
    resolve();
  })
  .catch(() => {
    console.log('inner level catch');
    reject();
  })
));