Angular UpgradeModule и ZoneAwarePromise - PullRequest
       34

Angular UpgradeModule и ZoneAwarePromise

0 голосов
/ 02 апреля 2019

Фон, есть приложение, созданное изначально с angularjs, теперь это angularjs / angular, использующий UpgradeModule.Возникла проблема с выпадением из угловой зоны и попаданием в зону <root>.Удар по достаточно повторяемому примеру.

Удар по довольно часто повторяющейся проблеме застревания в зоне <root>, и это было сведено к этому.Итак, 3 способа создания обещаний, все начинающиеся в угловой зоне.

new Promise(blahblah)

возвращает ZoneAwarePromise

new $q(blahblah)

возвращает обещание

let def = $q.defer(); return def.promise

возвращает 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

...