javascript - Angular 中的 $q.all() 不能很好地解析

标签 javascript angularjs q

我在一家工厂进行 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/

相关文章:

javascript - 如何在动态添加的数组中具有不同的值

javascript - Q promises - 数组中每个元素的 Node.js 函数

mysql - For 循环进行异步调用后 Q 未解析

javascript - 在双 for 循环中将项目添加到不同对象 - Javascript

javascript - postman :在环境变量的声明中使用请求名称

javascript - 由于错误 : [$injector:modulerr],Angular 应用程序无法实例化

AngularJS - 将工厂注入(inject)到主模块的运行中

javascript - 遍历 Q 中的 promise

javascript - 如何修复node.js网站中的nodemailer "object object"错误?

javascript - javascript 文本旋转器的初始间距问题