0

背景には、元々 angularjs で構築されたアプリがあり、現在は UpgradeModule を使用した angularjs/ angular ハイブリッドです。角度のあるゾーンから外れてゾーンに入るという問題が進行中<root>です。かなり再現性のある例を見つけました。

<root>ゾーンで立ち往生するというかなり頻繁に再発する問題に遭遇し、これに要約されました. したがって、プロミスを作成する 3 つの方法はすべて角度ゾーンから始まります。

new Promise(blahblah)

ZoneAwarePromise を返します

new $q(blahblah)

プロミスを返します

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

プロミスを返します

したがって、これは $q promise がゾーンでパッチされていないように見えるため、角度ゾーンが維持されておらず、コールバックが<root>. その結果、角度のある半分が非常に遅くなり (これが発生すると)、何らかのリモート要求からのプロミスのコールバックで何かが適用/ダイジェストを実行すると、時折ダイジェスト エラーが発生します。一般的な原因は $http と angularfire ライブラリからのコールバックなどです。

簡単に言えば、UpgradeModule は angularjs の約束 ($q) を ZoneAwarePromise のものとしてパッチすることを目的としていますか? それは私が期待していたものです。

編集: これは、StackBlitz のより基本的な例です。この例は、私のアプリと同じことを示しています: UpgradeModule は $q promises にパッチを適用しません: https://stackblitz.com/edit/github-fwbk4x?file=src%2Fapp%2Fhome%2Fapp.component.ts

4

0 に答える 0