我在angular 7应用程序中遇到问题。当我对finally块做出承诺时,不会引发错误!他们被吞下而没有注意到,当我删除了finally块时,它的行为与预期的一样。
下面是一些示例:使用vanillaJS(无Angular Framework),它的工作方式与我期望的一样:运行代码后,它会将我的console.logs打印到控制台,并引发“未捕获(承诺)”错误。另请参阅屏幕截图。
Promise.resolve()
.then(() => {
console.log('then');
return Promise.reject('This is an error. Please show up in the console, thank you.');
})
.finally(() => {
console.log('finally');
});
截图vanillaJS
在这里,我们在Angular中具有相同的代码。请参阅Stackblitz以获取参考:https ://stackblitz.com/edit/angular-iv7cq2
当我删除“最终”时,它会像我期望的那样引发错误。有了“最终”,它就可以吞下错误。
屏幕截图Angular
这是为什么?我在哪里必须修改我的代码,以便带有finally块的Promises也会引发错误?
你可以赶上并重新抛出错误后,终于。
结果:未处理的承诺被拒绝
Promise.resolve()
.then(() => {
console.log('then');
return Promise.reject('This is an error. Please show up in the console, thank you.');
})
.finally(() => {
console.log('finally');
}).catch(err => {
throw err;
});