背景,有一个最初使用angularjs构建的应用程序,现在它是使用UpgradeModule的angularjs / angular混合体。掉出角度区域并最终到达<root>
区域一直是一个持续存在的问题。打了一个相当可重复的例子。
遇到了一个相当经常发生的卡在<root>
区域的问题,并已对此进行了归纳。
因此,创建诺言的3种方法都从有角度的区域开始。
new Promise(blahblah)
返回ZoneAwarePromise
new $q(blahblah)
返回承诺
let def = $q.defer(); return def.promise
返回承诺
因此,在我看来,$ q承诺没有用zone修补,因此不维护角度区域,并且回调最终在<root>
中进行。当某个远程请求中的promise的回调中运行了apply / digest时,这会导致角度一半的东西变慢(一旦发生),并偶尔出现digest错误。常见的罪魁祸首是$ http和angularfire库中的回调等。
那么...简单来说,UpgradeModule是否打算将Anglejs Promise($ q)修补为ZoneAwarePromise?这就是我所期望的。
编辑:这是StackBlitz上更为准系统的示例。该示例与我的应用程序相同:UpgradeModule不会修补$ q promises:https://stackblitz.com/edit/github-fwbk4x?file=src%2Fapp%2Fhome%2Fapp.component.ts