我有一个函数,该函数带有一个返回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都会运行(除了然后捕获的任何内部级别) 。
答案 0 :(得分:0)
这是因为您的新承诺不会解决或拒绝任何事情。
test(() => new Promise((resolve, reject) => fetch()
.then(() => {
console.log('inner level then');
resolve();
})
.catch(() => {
console.log('inner level catch');
reject();
})
));