首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟javascript循环

延迟javascript循环
EN

Stack Overflow用户
提问于 2018-09-25 11:29:34
回答 2查看 86关注 0票数 1

我有一个循环,已经有了这样的延迟

代码语言:javascript
复制
for (var i = 0; i < 100; i++) {
    setTimeout( function (i) {
        console.log("Hai")
    }, 1000*i, i);
}

如果使用上面的编码,它将以1秒的暂停执行,重复100次。

在这里,我想再加一个延迟,如果它达到5次,它会暂停更长的时间,例如30秒,然后在延迟之前再继续。

例子:

代码语言:javascript
复制
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
delay 30 second 
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second

这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-25 11:51:43

代码语言:javascript
复制
const timeout = ms => new Promise(res => setTimeout(res, ms))
async function sayHai() {
  for (var i = 0; i < 100; i++) {
      await timeout(1000);
      console.log("Hai");
      if ( (i%5) == 4 ) await timeout(30000);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2018-09-25 11:54:12

最简单的方法,没有承诺。

代码语言:javascript
复制
let i = 1
function timeout(){
    i++
    setTimeout(()=>{
        console.log("Hai")
        timeout()
    },i % 5 === 0 ? 30000 : 1000)
}
timeout()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52497151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档