javascript - 如何在 for 循环中调用 setTimeout 以进行 api 调用
问题描述
我有以下循环:
for (let z = 0; z < searchArray.length; z++) {
searchFMG(searchArray[z])
}
searchFMG 在哪里进行 api 调用(使用 axios)并处理结果。
问题是我需要连接的 api 有一个我可以发出请求的速率限制。所以我尝试将其更改为:
setTimeout(searchFMG(searchArray[z], 1000)
它不会调用 z 的每个值。
我有什么方法可以减慢循环速度,或者以某种方式让这些调用相隔一秒?
谢谢
解决方案
如果您想在一秒钟内建立连接,请尝试这样的操作。制作一个异步sleep
函数来模拟“等待”。每次请求后等待 1 秒,然后再移动到数组中的下一项。但是,此解决方案确实涉及将您的代码包装在异步函数中(如果还没有的话)。
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function performSearch(){
for (let z = 0; z < searchArray.length; z++) {
await searchFMG(searchArray[z]);
await sleep(1000);
}
}
推荐阅读
- javascript - 收集文本输入信息并将其发布到 php 文档中。使用方法获取
- go - 添加 3 个方法或一个通用方法
- windows - 打开串口 CMD
- javascript - 样式化 Reactstrap 单选按钮
- javascript - 如何动态更改html元素的值?
- perl - 如何使用 App::Cmd 模块实现子命令?
- excel - 调整图片宽度和高度
- javascript - 使用变量源时无法将属性“src”设置为 null
- php - SQL 查询返回整个表而不是单行
- oracle - 为什么我的 sqlplus 字符串连接仅适用于 /service_name 而不适用于 :service_name