9

我有 3 个服务返回 3 个承诺,但第三个需要来自第二个的数据,所以我在第二个中调用它。我想等待解决所有三个承诺,这是我实现的方式,但不起作用(只等待第一个和第二个)。

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()回调分配给第三个服务返回的承诺。

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 回答