我有一个循环,循环并创建REST查询,每次都创建和运行一个不同的循环。
未来,我想可以进行的REST查询数量将远远超过浏览器一次(超过20,000)所需的数量。
我想做一些事情,计算完成了多少个循环,每500个循环后,暂停几秒钟,以使浏览器赶上REST响应,然后继续。
这在React JS中如何完成?
示例代码:
for (var i = 0; i < array.length; i++)
{
query += i;
axious.get(query) . then { ...does stuff here... }
//want something along the lines of if multiple of 500, wait(1000)
}
答案 0 :(得分:0)
最简单的方法是制作一个waitIf
函数,该函数返回一个Promise
并接受一个条件。
如果条件为true
,它将等待然后执行回调,否则将直接执行回调。
一个简单的实现就是。
function waitIf(condition, duration, callback) {
if (condition) {
// return a Promise that wait for a `duration` ms using timeout
return Promise((resolve) => {
setTimeout(() => {
resolve(callback());
}, duration);
})
}
return callback();
}
for (let i = 0; i < array.length; i++) {
query += i;
// unify the call here
waitIf(i % 500 === 0, 1000, () => axious.get(query)).then();
}