9

3 つの promise を返す 3 つのサービスがありますが、3 つ目は 2 つ目のデータが必要なので、2 つ目の中で呼び出します。3 つの約束がすべて解決されるのを待ちたいのですが、これは私が実装した方法ですが、機能しません (最初と 2 番目の約束だけを待ちます)。

var promise1, promise2, promise3;

promise1 = service1();
promise2 = service2();

promise2.then(function (data) {
  promise3= service3(data);

});

$q.all([ promise1, promise2, promise3]).then(function success() {
 //somehing
});
4

2 に答える 2

18

then()2 番目の promise のコールバックに、3 番目のサービスから返された promiseを割り当てることができます。

var promise1, promise2, promise3;

promise1 = service1();
promise2 = service2();

promise3 = promise2.then(function (data) {
  return service3(data);
});

$q.all([ promise1, promise2, promise3]).then(function success() {
 //somehing
});
于 2014-07-31T18:11:37.017 に答える
0

プロミス 2 をプロミス 1 内にネストしてから、最終的な解決をプロミス 3 デリゲート内に入れようとしましたか?

これは非常に洗練されたコードであり、私は確かに専門家ではありませんが、他のサービス呼び出しで何かを達成するのを待たなければならず、そのようなことをしなければなりませんでした。

于 2014-07-31T18:15:31.780 に答える