如何在Javascript循环中每N次迭代睡眠一次?

保罗4

我目前有一个Javascript forEach()循环,但是我需要更改代码以在第500个迭代中添加一个“睡眠”。

这种模式让我每次迭代睡眠3秒

如何在JavaScript循环中添加延迟?

for (let i=1; i<10; i++) {
    setTimeout( function timer(){
        alert("hello world");
    }, i*3000 );
}

第2次或第500次迭代我如何睡觉?

PS:

该解决方案需要在Chrome和IE11上运行。

马克·迈耶

您可以创建一个函数来捕获闭包中的循环变量,并返回一个简单的函数,该函数具有按批处理大小返回的循环。效果是,它使您可以从上次停止的地方继续执行for循环。如果有,则返回一个布尔值,指示是否完成操作,您可以将整个内容包装在中setInterval显示比解释容易:

function batch(batch_size, end){
    var i = 0                                  // capture i in closure
    return function(){
        for(i; i <= end; i++){
            console.log("doing something", i)  // work goes here
            if (!((i+1) % batch_size)) return i++
        }
        return false
    }
}
var f = batch(5, 11)                           // 0 - 11 batched in groups of 5
if (f()){                                      // start immediately, then setInterval if not finished in one batch.
    var interval = setInterval(() => {
    f() ||  clearInterval(interval)
    }, 2000 )
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript在同一循环中每x迭代一次循环吗?

如何在下一次迭代之前在JavaScript循环中添加延迟?

每次调用一个函数时如何在循环中迭代一次?

如何在PowerShell foreach循环中重复一次迭代?

如何在循环中更改条件,但仅在第一次迭代之后?

如何在for循环中的下一次迭代之前等待承诺解决

如何在Python中的无限循环中每X次仅调用一次函数?

如何在循环中一次显示值

如何在循环中只打印一次消息

每3个迭代中断一次while循环

在PHP的foreach循环中调整最后一次迭代

将最后一次迭代存储在循环中(python)

在forEach循环中跳过第一次迭代

在 for 循环中只迭代一次参数(Python)

在Python的复杂for循环中返回一次迭代

在while循环中保存txt文件在每一步保存当前和上一次迭代

如何每 3 小时和总共 7 天迭代一次 for 循环

如何仅在Python的嵌套循环中迭代一次列表

如何创建多个数据集,每个数据集在for循环中迭代一次?

在while循环中单击按钮时,如何进行下一次迭代?

如何在while循环的52次迭代中减少一次变量?

如何一次运行一次循环javascript

如何在 while 循环中打印一次但仍然运行 while 循环?

在纯JavaScript中选择任意div后,如何在每次单击时一次单击循环中的nextElementSibling项目?

在每个 in for 循环中每 3 次执行一次操作

在PyGame中,如何在不使用睡眠功能的情况下每3秒移动一次图像?

每四次迭代修改一次Django for循环

如何在for循环中每3次添加一个换行符

如何在另一次迭代中使用一个循环的输出?