【问题标题】:How to pull data from Paginated JSON如何从分页 JSON 中提取数据
【发布时间】:2020-03-13 17:34:21
【问题描述】:

我说 300 个项目 10 显示到一个页面。页面加载 JSON 数据,限制为 10 个(不能更改)

我想浏览 30 多个页面,拉出每个项目并列出它。

url.com/api/some-name?page=1 etc

理想情况下,该脚本将使用上述 URL 作为规则,并以 1 为增量进行擦洗,直到填充每个页面的所有 10 个。

这可以吗?我该怎么办?对此的任何建议或帮助都将极大地帮助我学习和了解人们建议的方法。

const getInfo = async function(pageNo) {
const jsonUrl = "https://website.com/api/some-title";

  let actualUrl = jsonUrl + `?page=${pageNo}`;
  let jsonResults = await fetch(actualUrl).then(response => {
    return response.json();
  });
  return jsonResults;
};
const getEntireList = async function(pageNo) {
  const results = await getInfo(pageNo);
  console.log("Retreiving data from API for page:" + pageNo);
  if (results.length > 0) {
    return results.concat(await getEntireList(pageNo));
  } else {
    return results;
  }
};
(async () => {
  const entireList = await getEntireList();
  console.log(entireList);
})();

【问题讨论】:

  • 与我们分享您尝试解决此问题的方法。
  • 嗨@IslamElshobokshy 我已经用我目前所拥有的更新了这篇文章。

标签: javascript json pagination fetch


【解决方案1】:

我可以在您的代码中看到一些问题。

  1. 对 getEntireList() 的初始调用应使用首页的索引进行初始化,可能类似于 const entireList = await getEntireList(1);
  2. 页码有时需要增加。
  3. results.concat() 可能不会有预期的效果。 json() 返回一个对象、列表或值(取决于服务器),results 将是这些类型之一。 concat() 对字符串进行操作;所以调用json()(充其量)是多余的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2012-04-16
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多