首页 > 解决方案 > 如何进行大量 API 调用

问题描述

我有以下代码来进行 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 等...

标签: javascriptreactjsapireact-hooks

解决方案


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

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


推荐阅读