等待X时间,然后继续循环-JS React

时间:2019-04-03 10:42:33

标签: javascript reactjs rest delay timedelay

我有一个循环,循环并创建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)

} 

1 个答案:

答案 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();
}