Как работает асинхронность цикле?

Объясните, пожалуйста, как работают асинхронные вызовы цикле

for(let i=0;i<10;i++){
setTimeout(()=>console.log(i),5000)
}

Непонятно почему значения i не выводятся каждые 5 секунд,а выводятся все цифры от 0 до 9 спустя 5 секунд.


Ответы (1 шт):

Автор решения: Igor

Вы в плотном цикле (сразу) заказываете десять отложенных действий, которые должны произойти через пять секунд. Вот они все и происходят через пять секунд.

for (let i = 0; i < 10; i++) {
  setTimeout(() => console.log(i), 1000 * (i + 1))
}

→ Ссылка