我有一系列端点,我想像这样查询:
const apiList = ['/api1', '/callme', '/thisonetoo']
使用axios,一个基于promise的库,我可以通过映射数组动态生成一个promise - >
Promise.all(apiList.map(name => promiseGet(name))).then(res => ...)
这样可以正常工作......但是它调用服务器的速度太快了,而且有些api被拒绝了,导致整个程序搞砸了。
在创建或调用下一个端点之前,有没有办法节流/去抖并等待500毫秒?
限制Promise的开放量似乎不够。我必须进行一些"睡眠"在调用数组中的下一个api端点之前等待一段时间。
答案 0 :(得分:-2)
也许连续打电话给他们?
const apiList = ['/api1', '/callme', '/thisonetoo'];
function doNext() {
const uri = apiList.shift();
axios.get(uri)
.then(doNext);
}
如果您想要额外的限制,可以在setTimeout
内添加doNext
。
答案 1 :(得分:-2)
我建议在通话中添加concurrency
参数:
Promise.all(apiList.map(name => promiseGet(name), { concurrency: 10 })).then(res => ...)
。
您还可以使用Promise.delay(500)
在执行