javascript - 如何使异步循环在迭代之间等待 1 秒?
问题描述
我有一个对 API 进行异步调用的 forEach 循环:
array.forEach(async (item) => {
await callAnApi(item)
})
我想让这个循环在项目之间等待 1 秒 - 因为API 越来越饱和。
我们需要这样的东西:
array.forEach((item) => {
setTimeout(async () => {
await callAnApi(item)
},1000)
})
这样它就不起作用了,因为整个循环在“同一时间”运行,所以每个调用将在 1 秒后“同时”触发。
我已经搜索了几十个答案,但没有一个能解决这个简单的问题。
解决方案
您可以增加超时延迟:
array.forEach((item, count) => {
setTimeout(() => callAnApi(item), count * 1000);
});
这会以 1 秒的间隔设置计时器,而不是同时设置计时器。
推荐阅读
- python - 在python中计算皮尔逊相关性
- python - How do i run another Python file in a lower directory
- java - 尝试从 war 文件启动一个新应用程序我得到 java.net.BindException: Address already in use
- java - 使用java将数据添加到CSV文件
- jquery - 在按钮单击时切换活动类
- javascript - 在带有 createTextNode 的段落上使用
- reactjs - Powerpoint viewer for react?
- git - How do I merge two repositories with two different commits?
- swift - List of Contacts from Contacts App in SwiftUI
- javascript - 这个 Redux (react) App 可能有什么问题?