2016-12-21 12 views

答えて

7

すべての呼び出しでmyAsyncFunc(i: string)から新しいプロミスが返されます。そのため、「無限ループ」が発生します。 「無限ループ」は、実際に伝統的な無限ループではなく、その入力プロミスの解決時変更検出周期をトリガasync管の副作用はない。

;-)同じプロミスインスタンスを返す試しますこの新しい変化検出サイクルでは、角度はmyAsyncFunc(i: string)と呼ばれ、新しいPromiseを観察してから、すべてが再び始まります。

+0

答えをありがとう...だから、私は各項目にPromiseのインスタンスを設定する必要がありますか?または、私はどのように同じインスタンスを返しますか? –

+0

あなたはマップオブジェクトのようなiごとに約束をキャッシュしなければならないか、単に私自身に約束を付ける必要があります(私は個人的には専用のビューモデルを持っているのが好きです)。 –

0

それは5ギガバイトODブラウザのRAMを消費する私たちのプロジェクトを打つときは、この特定のトピックに関する私のブログ投稿を確認することができます:)
それは、この問題を癒すためにhere

最も簡単な方法です (すでに述べたように)使用していないです関数はテンプレートで直接約束を返しました:{{ getPromise(id) | async }}しかし、コントローラ(.tsファイル)にこの約束を保存し、それを参照してください。
さらに、これは変更検出の設定をpush-pullに変更することで治ることができますが、私の意見では、これは悪いことではありません。

関連する問題