我有以下内容(向数组添加promises):
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()的内部。另一种方法是什么?
答案 0 :(得分:1)
您正在创建的promise对象不会返回promise对象,您还应该从内部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);
}