我有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
});
答案 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代表内?
这个非常漂亮的代码,我当然不是专家,但是不得不等待其他服务电话上的事情,并且不得不做那样的事情。