【发布时间】:2019-08-24 18:18:21
【问题描述】:
我在 Angular 7 应用程序中遇到问题。 当我有一个带有 finally 块的承诺时,不会抛出错误!他们在没有注意到的情况下被吞下,当我删除 finally-block 时,它的行为就像预期的那样。
以下是一些示例: 使用 vanillaJS(无 Angular 框架),它可以像我期望的那样工作: 一旦您运行代码,它就会将我的 console.logs 打印到控制台并抛出“Uncaught (in promise)”错误。另请参阅屏幕截图。
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
当我删除“finally”时,它会像我期望的那样抛出错误。使用“finally”,它只会吞下错误。
截图角度
这是为什么呢?我必须在哪里修改我的代码,以便带有 finally-blocks 的 Promise 也会抛出错误?
【问题讨论】:
-
在我的情况下,您的 vanilla 代码 sn-p 不会引发错误。 prntscr.com/n6tjlm
-
问题是 Angular 似乎用延迟代码覆盖
Promise.prototype.finally- 实际上,该页面中的 Promise 根本不是 native -
有关 Angular 的 ZoneAwarePromise 垃圾的更多信息,请参阅 stackoverflow.com/questions/52391762/what-is-a-zoneawarepromise/…
标签: javascript angular es6-promise angular7 zonejs