我在一家工厂进行 3 个 $http 调用,遇到了麻烦。
我宣布 4 个 promise :
var promise = $q.defer(),
PBdeferred = $q.defer(),
Rdeferred = $q.defer(),
Pdeferred = $q.defer();
之后我第一次调用 API
$http.get('/pendingBills').then(function(response) {
var PendingBills = ['id', 'path', 'reservas', 'importe', 'fecha'];
PBdeferred.resolve(PendingBills);
});
现在用一个空数组解决最后 2 个 promise (我还没有端点)
Rdeferred.resolve([]);
Pdeferred.resolve([]);
那里是我用$q.all的地方
$q.all([PBdeferred, Rdeferred, Pdeferred]).then(function (results){
console.log('Results', results);
promise.resolve({
PendingBills: results[0],
Remittances: results[1],
Payed: results[2]
});
});
并返回高级别的 promise
return promise.promise;
控制台日志显示了 promise ,但我认为 promise 已解决。
解决这个问题的想法?
最佳答案
您没有正确使用 $q.all
。它需要一个 promises 数组(或对象),而不是一个 deferreds 数组。
改变
$q.all([PBdeferred, Rdeferred, Pdeferred])
到
$q.all([PBdeferred.promise, Rdeferred.promise, Pdeferred.promise])
关于javascript - Angular 中的 $q.all() 不能很好地解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32099674/