-1

Используйте Self Invoked Function для создания замыкания и setTimeout для задержки вывода.

(function () {
  let countdown = 5;

for (; countdown > 0; countdown--) { setTimeout(() => console.log(countdown), 1000); } })();

Не понимаю логики... Почему вначале проходит циклом и только в конце выводится сразу пять 0

  • 1
    https://stackoverflow.com/questions/42173350/synchronous-and-asynchronous-loops-in-javascript – entithat Jun 16 '20 at 08:48
  • Асинхронное выполнение вызовет функцию в setTimeout только через секунду, но через эту секунду значение countdown будет уже 0 т.к. цикл завершится. В задаче уже описан вариант решения данной проблемы - создать замыкание, чтобы оставить только копию countdown на текущий момент, а не само значение. Смотрите дубликаты, там описаны все варианты решений. – Alex Krass Jun 16 '20 at 08:54

1 Answers1

0

(function() {
  let countdown = 5;

function t(){ console.log(countdown--);

if(!countdown)
    clearInterval(timer);

}

let timer = setInterval(t, 1000); })();