我购买了一个 API,该 API 的设置限制为每秒 5 次调用。我有一个端点列表,我想为该 API 点击并使用以下代码循环遍历这些端点并获取我需要的数据:
async function getData(endpoints) {
const promised = await Promise.allSettled(
endpoints.map(async (endpoint) => {
const response = await fetch(`${urlStart}/${endpoint}/${urlEnd}`);
const data = await response.json();
const results = {
endpoint,
data,
};
return results;
})
);
return promised;
现在,这种方法有效——但是,我收到了很多拒绝并显示以下错误消息:
{
"name": "ConnectTimeoutError",
"code": "UND_ERR_CONNECT_TIMEOUT",
"message": "Connect Timeout Error"
}
我怀疑我每秒访问 API 的次数太多,这就是我收到这些拒绝的原因。
因此,我想知道如何修改我的代码,以便我间隔提取调用,以便我每 200 毫秒运行一次调用(即每秒 5 次)。
我尝试了 setTimeout 和 setInterval,但无法真正弄清楚如何让它工作。充其量,它什么也没做——更糟糕的是,它返回的结果更少。
所以,我想知道,我怎样才能在 Promise.allSettled 中间隔我的 fetch 调用?
谢谢。