我循环遍历 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/