如何创建功能/方法循环javascript

时间:2015-07-14 08:31:54

标签: javascript meteor

我有一个应用程序在jive中调用api后自动将数据插入mongodb,我的问题是响应是分页的。

var getAPICall=function(apiLink){
  console.log(apiLink);
  var response = HTTP.get(apiLink, {
             headers: {
                 Authorization: getAPIToken()
             }
    });
  return response;
}

var getAPIToken = function(){
  var token = HTTP.post("https://api.jivesoftware.com/analytics/v1/auth/login?clientId=fakeclientid.i&clientSecret=fakesecret.s");
  //console.log(token);
  return token.content;
}

响应看起来像这样。

{"paging":{"next":"https://cloudalytics-api-phx.prod.jivehosted.com:443/analytics/v2/export/activity/lastday?startIndex=100&count=100&show-all=true","itemsPerPage":100,"totalCount":164406,"currentPage":1,"totalPages":1645}, list: [{....}]}

包含nextcurrentPagetotalPage字段

我计划为next页面功能执行循环,并在totalPage等于currentPage

时停止

我这样做

var res = getAPICall(baseline);    
_.each(res.data.list, function(item) {
    console.log(item.uuid);
    Reports.upsert({"uuid":item.uuid},{$set :item});
    });


var totalPage = res.data.paging.totalPage; 
for(var current = res.data.paging.currentPage ;  current <= totalPage ;) {
    var res = getAPICall(res.data.paging.next );    
        _.each(res.data.list, function(item) {
            console.log(item.uuid);
            Reports.upsert({"uuid":item.uuid},{$set :item});
            });
}

但此语句仅运行到具有无限循环的下一页。我可以通过功能方法更好地做到这一点吗?

我在javascript中的新内容请锤击我。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用递归时这应该非常简单。

var myFunction = function(baseline){
  var res = getAPICall(baseline);
  _.each(res.data.list, function(item) {
    console.log(item.uuid);
    Reports.upsert({"uuid":item.uuid},{$set :item});
  });
  if (res.data.paging.currentPage != res.data.paging.totalPage) {
    myFunction(res.data.paging.next)
  }
}    

myFunction(baseline);