Javascript 使用Vue和AXIOS从API循环构建阵列

Javascript 使用Vue和AXIOS从API循环构建阵列,javascript,vue.js,Javascript,Vue.js,我有一个NIH API,一次只能调用50页。以下代码适用于50个项目的第一页 loadNIH() { let offset = 0; axios({ method: "GET", url: "https://api.federalreporter.nih.gov/v1/projects/search?query=orgName:Medical University of South Carolina$fy:2016$&a

我有一个NIH API,一次只能调用50页。以下代码适用于50个项目的第一页

loadNIH() {
      let offset = 0;
      axios({
        method: "GET",
        url:
          "https://api.federalreporter.nih.gov/v1/projects/search?query=orgName:Medical University of South Carolina$fy:2016$&offset=" + offset +"&limit=50"
      })
        .then(res => {
          this.NIHData = res.data.items;
        })
        .catch(function(error) {
          console.log(error);
        });
    },
我需要循环所有页面,直到获得所有数据。每次偏移量需要增加此调用中接收(请求50)的页数9页。我需要它向this.NIHData的数组添加数据。我有一个工作,所以我需要一些帮助创建循环


提前感谢

您应该反复调用API,直到得到一个空的结果集。这可以通过
setTimeout()的帮助轻松实现。


您不能将
偏移量
移出函数,在函数中使用
offset+=50
并从成功路径中调用
loadNIH()
?(直到满足条件)谢谢你的建议,但问题是打多少次电话?答案在第一个结果集上,直到最后一个结果集,你才知道何时退出。数字9根据查询而变化。在fetchPages中的this.fetchPages出现之前,它工作得很好。然后axios抛出一个错误,称为Uncaught TypeError:无法读取未定义的setTimeout的属性“offset”(this.fetchPages(args),2);它的循环非常好,但是现在我在这个.NIHData.push(res.data.items)中得到了一个错误;of无法读取undefined“的属性'NIHData',但是如果我将其更改为this.NIHData=res.data.items;我会看到数据加载到每个页面,直到出现空响应。但是this.NIHData=this.NIHData.concat(res.data.items);工作正常
loadNIH() {
  let params =
  {
    offset: 0
  }
  this.NIHData = [];
  this.fetchPages(params);
},
fetchPages(args)
{
  axios.get("https://api.federalreporter.nih.gov/v1/projects/search?query=orgName:Medical University of South Carolina$fy:2016$&offset=" + args.offset +"&limit=50"
  )
    .then(res => {
      this.NIHData.push(res.data.items);
      args.offset += res.data.items.length;
      if (res.data.items.length > 0) setTimeout(this.fetchPages, 2);
    })
    .catch(function(error) {
      console.log(error);
    });
}