Angularjs q.all 在承诺结束之前解雇

Angularjs q.all firing before promises conclude

我有以下内容(向数组添加承诺):

function processInformation() {
    var promisesArray = [];
    for(var i =0; i<a.length; i++) {
      var promise = this.getValue().then((response) => {
            this.processValue(response).then(()=> {
                  // it gets here
            });
       });
      promises.push(promise).
    }

 return $q.all(promises);
}

然后我这样打电话:

  getInformation().then((response) =>{
        // wait for the promises to be resolved
         this.processInformation().then((r) => {
           // never gets here
          });
    }).finally(()=> {
      //gets here
});

这没有按预期工作,因为它确实调用了 finally 并且它永远不会进入 processInformation。我也尝试使用 angular.forEach 而不是 for 循环(如其他帖子中所建议的那样),但它仍然无法正常工作。不过,它确实进入了 processValue() 的 then 内部。解决这个问题的另一种方法是什么?

您正在创建的 promise 对象没有 returning promise 对象,您还应该 return 内部 promise 的响应来解决它。

代码

function processInformation() {
    var promisesArray = [];
    for(var i =0; i<a.length; i++) {
      var promise = this.getValue().then((response) => {
            return this.processValue(response).then((data)=> {
                  // it gets here
                  return data;
            });
       });
      promises.push(promise).
    }

 return $q.all(promises);
}