javascript - 设置 fetch API 调用的延迟

标签 javascript timeout settimeout fetch-api

我循环遍历 id 数组并每次使用 id 调用 API。
该代码可以工作,但问题是每个循环中获得的结果不一致。在某些循环中,响应是“您已达到每秒最大速率限制”。
所以我在fetch函数中添加了3秒的延迟,但似乎不起作用。

代码:

export async function getThirdAPI(access_token, id_array, globalObject) {
  
 const apiPromises = id_array.map(async (id) => {
   return new Promise(resolve => setTimeout(resolve, 3000)).then(async()=>{
    let url = `${baseAPI}/participants/${id}`;
    var obj = {
      method: 'GET',
      headers: {  
      authorization: `Bearer ${access_token}`
         }
    }
    const response = await fetch(url, obj);
    return await response.json();
    })
  });

  const results = await Promise.all(apiPromises);
  console.log(results)

  globalObject.store_data.push(...results);

  return globalObject;
}

当我控制台日志“结果”时,我得到如下内容:

{
  page_count: 1,
  page_size: 300,
  total_records: 2,
  next_page_token: '',
  participants:[ Object }
},
{
  page_count: 1,
  page_size: 300,
  total_records: 3,
  next_page_token: '',
  participants:[ Object }
},
{
  code: 429,
  message: "You have reached the maximum per-second rate limit. Try again later"
},
{
  page_count: 1,
  page_size: 300,
  total_records: 11,
  next_page_token: '',
  participants:[ Object }
},
{
  code: 429,
  message: "You have reached the maximum per-second rate limit. Try again later"
}

任何建议都会很棒!

最佳答案

你可以安装这个 pckg npm install sleep-promise

import sleep from "sleep-promise";

   
function fetchUrl(url) {
  return fetch(url)
 .then(res => res.json())
 .then(sleep(2000));

}

关于javascript - 设置 fetch API 调用的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72972814/

相关文章:

javascript - 日期选择器范围不起作用

javascript - 对象字面量函数创建

node.js - 如何以编程方式等待进程启动端点

c# - 为什么 HttpWebRequest ReadWriteTimeout 设置为 5 分钟?

assembly - 在 MS-DOS/FreeDOS 应用程序中实现超时

javascript - 如何停止递归和/或使用更新的变量重新启动当前函数

javascript - 如何为对象实现 glob ** ?

javascript - 在非事件选项卡中运行时,Chrome v54 中的 Web Workers 运行速度是原来的两倍

javascript - setTimeout - 回调参数必须是一个函数

javascript - 为什么这段 JavaScript 代码根本不起作用?