Angularjs,等待一个嵌套的承诺

Angularjs, wait for a nested promise

本文关键字:一个 嵌套 承诺 等待 Angularjs      更新时间:2023-09-26

我有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
});

你可以用第三个服务返回的承诺来分配第二个承诺的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
});

你是否尝试过将你的promise 2嵌套在promise 1中,然后将你的最终解决方案放在promise 3委托中?

这是一段相当漂亮的代码,我当然不是专家,但是我不得不等待完成其他服务调用的事情,并且不得不做这样的事情。