温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - In Angular a Promise with a finally()-Block does not reject properly
angular angular7 javascript es6-promise zonejs

javascript - 在Angular中,带有finally()-Block的Promise不能正确拒绝

发布于 2020-03-27 10:41:49

我在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也会引发错误?

查看更多

查看更多

提问者
Michael B
被浏览
182
timo-haas 2019-07-03 21:43

你可以赶上并重新抛出错误后,终于。

结果:未处理的承诺被拒绝

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;
    });