【问题标题】:How to make large quantities of API calls如何进行大量 API 调用
【发布时间】:2021-07-18 17:23:03
【问题描述】:

我有以下代码来进行 API 调用

useEffect(() => {
    const fetchData = async (id) => {
      try {
        const result = await fetch(
          `http://site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/${id}`
        );
        const body = await result.json();
        setData(body.athlete.college.name);
      }
    };

    // call the async fetchData function
    let length = 50;
    const total = 2902;
    for (let id = 1; id < length; id++) {
      fetchData(id);
    }
  }, []);

我总共需要进行 2902 次 API 调用。我可以通过将长度值更改为 2902 来一次发送所有内容,但是 API 调用将在一定限制后失败,我很可能会被禁止。如何一次进行 50 次 API 调用,直到总共进行 2902 次 API 调用?从 1 到 50 开始,全部完成后,做 51-100 等……

【问题讨论】:

    标签: javascript reactjs api react-hooks


    【解决方案1】:

    您可以一次进行所有调用,因为 Chrome(例如)一次只能处理 6 个异步调用

    如果服务器设置了特定的速率限制,您可能需要添加 setTimeout,或者可能缓存结果以防止重复调用相同的数据 - 但您需要指定问题中的限制是什么我认为更准确的答案

    【讨论】:

    • 如果我将长度设置为 2900,它确实会使所有这些长度和 API 调用在大约 800 左右后开始失败......如果你让提琴手工作,请告诉我,它对我不起作用...
    • 我正在考虑一种解决方案,它将 setInterval 设置为 5 秒,并每 5 秒启动一组新的 API 调用..
    • 好主意。或者将您的 fetchData(id) 呼叫包裹在 setTimeout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2020-09-16
    • 2019-03-15
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多