Angularjs,等待嵌套的承诺

Tre*_*res 7 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
});
Run Code Online (Sandbox Code Playgroud)

rye*_*lar 15

您可以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
});
Run Code Online (Sandbox Code Playgroud)