我有3个服务返回3个promise,但是第三个需要来自第二个的数据,因此我在第二个内部调用它。我想等待所有三个 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
});

最佳答案

您可以为第二个promise的then()回调分配第三个服务返回的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
});

09-11 19:00