Promise.allSettled 中的 API 调用间隔

问题描述 投票:0回答:0

我购买了一个 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 调用?

谢谢。

javascript promise es6-promise fetch-api
© www.soinside.com 2019 - 2024. All rights reserved.