使用分页集合时的 ​​Angularjs promise 链

标签 angularjs promise

我正在使用一个 REST api,它为 GET 请求提供分页响应,如下所示:

{count: 43103
previous: null
next: http://ecoengine.berkeley.edu/api/photos/?page=2
results: [json objects....]
}

我想通过关注 next 创建一个加载所有数据的服务。链接至 next变为空。我被困在如何在这种情况下链接 promise ,并希望获得有关如何进行的任何帮助(此处为 angular/js 新手)。到目前为止,我的 plunker 在这里 http://plnkr.co/edit/ySiQLvu9RNrKkQAoDmKh .您可以从控制台消息中看到代码仅从前 2 页检索数据。谢谢你。

最佳答案

我尝试使用递归来链接 promise 来解决这种情况。在这里查看我的 fiddle

http://plnkr.co/edit/NPh6uQ2DgVuhVxUgHB6h?p=info

基本上在 loadData 上完成的递归可以获得分页数据。这是实现

var loadData = function(url) {
      var deferred = $q.defer();

      function loadAll() {
        $http.get(url)
           .then(function(d) {
                debugger;
                console.log('private http.get().then()');
                console.log(d);
                aggregateData.value.push(d.data.results);
                if(d.data.next) {
                   url=d.data.next;
                   loadAll();
                }
                else {
                   deferred.resolve(aggregateData.value);
                }
           })
      }
      debugger;
      loadAll();
      return deferred.promise;

 };

我用了 aggregateData数组,但您可以自由使用在 loadData 函数中声明的任何数组。

关于使用分页集合时的 ​​Angularjs promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20171928/

相关文章:

javascript - 基本(本地)HTML 不加载图像或 js 但加载 css

javascript - Angular UI Router - 继承状态下的 View

javascript - 如何在触发 onclick 事件时将 id 从 View (HTML)传递到 AngularJs Controller ?

javascript - 关于在 firebase 云函数中 promise 的 then 回调中返回空值的问题

javascript - 如何将 $.get 的结果传递给另一个函数的返回

javascript - 关于 Promises/A+ 规范,术语 "thenable"和 "promise"有什么区别?

javascript - 我无法在 .then() Promise 中返回对象

javascript - 如何使用动态变量访问嵌套的 JSON 数据

angularjs - 如何在本地运行angularjs文档

javascript - 如何实现异步生成器以与 Node 可读流进行流传输?