Angularjs,等待嵌套的承诺

时间:2014-07-31 18:07:11

标签: javascript angularjs q angular-promise

我有3个服务返回3个promise,但第三个需要第二个数据,所以我在第二个内部调用它。我想等待所有三个承诺得到解决,这是我实施的方式,但不起作用(仅等待第一个和第二个)。

var promise1, promise2, promise3;

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

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

});

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

2 个答案:

答案 0 :(得分:15)

您可以使用来自第三方服务的退回承诺分配第二个承诺的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
});

答案 1 :(得分:0)

您是否尝试将承诺2嵌入承诺1中,然后将最终决心置于承诺3代表内?

这个非常漂亮的代码,我当然不是专家,但是不得不等待其他服务电话上的事情,并且不得不做那样的事情。