AngularJS Promises和$ http.get

时间:2017-04-01 20:53:39

标签: javascript angularjs http

我试图使用$ q.defer,$ q.all和promises来等待http请求列表

我使用此代码调用$ q.all

$q.all(promises).then(function(data) {
      console.log('All promises have resolved', data);

      var retVal = Utils.DoStep2();
      console.log(retVal);
});

这个函数永远不会被调用,我检查过并且为所有值调用$ http.get。

            var deferred = $q.defer(); 
           $http.get(requestUrl).
           then(function (data) {
               var p = {
                   data: data,
                   name: name
               };
               pData.push(p);
               deferred.resolve(p);
               return p;
           })
           .catch(function (status) {
               deferred.reject(status);
           });

           promisesList.push(deferred.promise);

使用console.log在DoStep2上打印pData的长度以及pData 我得到的是0和看起来像0对象的长度,但当我打开它时,看起来所有对象都在每个特定调用的$ http.get调用中被初始化,这使我确信$ http.get响应收到了,这是一个有效的回应。

此外,$ all根本没有调用可能出错的地方?

感谢您的协助

1 个答案:

答案 0 :(得分:1)

确定管理以修复它 我使用了服务函数getService()并且这个函数返回了promise然后在每个调用中我添加了getService()promise返回到promisesList这个列表我等待使用$ all并且它工作了 非常感谢您的帮助。