Angular UpgradeModule和ZoneAwarePromise

时间:2019-04-02 15:34:04

标签: angularjs angular typescript angular-promise zonejs

背景,有一个最初使用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

0 个答案:

没有答案