задержка в задержке зацикливания JavaScript - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть цикл, у которого уже есть задержка, подобная этой

for (var i = 0; i < 100; i++) {
    setTimeout( function (i) {
        console.log("Hai")
    }, 1000*i, i);
}

, если при использовании вышеуказанного кодирования он будет выполнен с 1-секундной паузой для 100 повторений

здесь я хочу добавитьеще одна задержка, при которой, если она достигнет 5 раз, она будет приостановлена ​​дольше, например, на 30 секунд, а затем снова продолжится до задержки

пример:

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

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Самый простой способ, без обещаний.

let i = 1
function timeout(){
    i++
    setTimeout(()=>{
        console.log("Hai")
        timeout()
    },i % 5 === 0 ? 30000 : 1000)
}
timeout()
0 голосов
/ 25 сентября 2018
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);
  }
}
...