javascript - 如何进行大量 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 等...
解决方案
您可以一次拨打所有电话,因为 Chrome(例如)一次只能处理 6 个异步调用
如果服务器设置了特定的速率限制,您可能需要添加 setTimeout,或者可能缓存结果以防止重复调用相同的数据 - 但您需要指定问题中的限制以获得更准确回答我认为
推荐阅读
- excel - 如何使用分组填充多对多值(非 VBA)
- prolog - 如何在序言中使用递归算法连续打印图形路径
- slurm - 如何使用 Slurm 获得交互式会话?
- javascript - Javascript 将对象子对象合并到一个新对象
- regex - 正则表达式最后一个单词之后的所有内容
- html - 锚标签有一半的链接,但是当我点击链接时,它会打开一个包含完整链接的新页面
- javascript - 从前端上传大文件
- celery - 芹菜偶尔会忽略 CELERY_TASK_DEFAULT_QUEUE
- python - 无法运行 StackNet 分类器的 predict_proba
- python - 如何为另一个列表中的列表分配新值?