【问题标题】:Javascript API fetch loop using offset使用偏移量的 Javascript API 获取循环
【发布时间】:2021-11-26 09:04:15
【问题描述】:

我正在从每次调用限制为 50 条记录的 API 获取数据。我总共需要检索 10,000 条记录,因此通过 offset 参数使用分页来实现这一点。

我不太熟悉需要使用的语法,但我想继续循环获取,直到单个调用返回的记录数

除了给我 10,000 的最终“计数”之外,我还需要将每次调用的 JSON 响应附加在一起

let offset = 0

       fetch(`https://api.opensea.io/api/v1/assets?collection=womenandweapons&format=json&offset=${offset}&limit=50&order_direction=desc`, 
      {
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
        
      })
    
    .then(response => response.json())
    .then(data => {

      let len = Object.keys(data.assets).length
      console.log(len)
      console.log(data.assets)
    })
    
    
    offset += 50

【问题讨论】:

  • limit=${offset}&limit=50 应该类似于 offset=${offset}&limit=50
  • 如果您使用 async/await(在 fetch 上),您可以简单地使用 forwhile 循环。

标签: javascript fetch


【解决方案1】:

我有幸做这样的事情:

const main = async () => {
    const url = new URL(AIRTABLE_URL);
    let data = await fetcher(url, AIRTABLE_API_KEY);
    storiesTotal = mapData(data.records);

    while (data.offset) {
      data = await fetcher(url, AIRTABLE_API_KEY, data.offset);
      storiesTotal = [...storiesTotal, ...mapData(data.records)];
    }
  }

main();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 2021-04-21
    • 2015-12-28
    • 2011-06-20
    • 1970-01-01
    • 2020-11-28
    • 2015-07-23
    • 1970-01-01
    相关资源
    最近更新 更多