背景,有一个最初用 angularjs 构建的应用程序,现在它是使用 UpgradeModule 的 angularjs/ angular 混合。从角度区域掉出并最终进入该<root>
区域一直存在问题。遇到了一个相当可重复的例子。
遇到了一个相当频繁地再次出现的问题,即卡在该<root>
区域中,并且已经被提炼成这个。因此,创建 Promise 的 3 种方法都从角度区域开始。
new Promise(blahblah)
返回 ZoneAwarePromise
new $q(blahblah)
回报承诺
let def = $q.defer(); return def.promise
回报承诺
所以,在我看来,这看起来像 $q 承诺没有被区域修补,因此角度区域没有得到维护,回调最终在<root>
. 当某些东西在来自某种远程请求的承诺的回调中运行应用/摘要时,这会导致角半部分的事情非常缓慢(一旦发生)和偶尔的摘要错误。常见的罪魁祸首是 $http 和来自 angularfire 库的回调等。
所以...简而言之,UpgradeModule 是否旨在将 angularjs 承诺 ($q) 修补为 ZoneAwarePromise 的?这是我所期望的。
编辑:这是 StackBlitz 上的一个更简单的示例。此示例显示与我的应用程序中的相同:UpgradeModule 不修补 $q 承诺:https ://stackblitz.com/edit/github-fwbk4x?file=src%2Fapp%2Fhome%2Fapp.component.ts