0

Есть такой цикл, есть цель чтобы elevatorLevel увеличивался только раз в секунду, ниже пытался сделать через setTimeout, не выходит

while (nextLevel > elevatorLevel) {
   elevatorLevel++;
}

while (nextLevel > elevatorLevel) { setTimeout(() => { elevatorLevel++; }, 1000); }

Возможно ли в цикле вообще сделать задержку, а если нет то как без цикла возможно подобное реализовать?

Momav
  • 49
  • 2
    Можно сделать не цикл, а рекурсию. Пусть из callback'а функции setTimeout вызывается следующий setTimeout, если условие верно.
    
    function step() {
     setTimeout(() => {
       elevatorLevel++;
       if (nextLevel > elevatorLevel) step();   
     }, 1000);
    }
    
    – Sergey K. Mar 08 '22 at 14:40
  • @SergeyK, а nextLevel > elevatorLevel будет возвращать false таймер будет молоть впустую? – De.Minov Mar 08 '22 at 14:48
  • @De.Minov, Если условие будет ложным, то цепочка рекурсии прервётся и следующий таймер не будет создан. – Sergey K. Mar 08 '22 at 19:07
  • @SergeyK. ах да, прошу прощения, не так увидел код. Вот по этому лучше отвечать не в комментах, а в ответе – De.Minov Mar 09 '22 at 04:46
  • @De.Minov, Разумеется лучше, но вопрос был закрыт и ответить нельзя, но помочь хотелось. – Sergey K. Mar 09 '22 at 06:52

0 Answers0