Этот код ждет одну секунду и выполняет все итерации сразу:Почему SetTimeout не выполняет должным образом внутри цикла VS внутри рекурсивной функции
for(let i=0;i<4;i++){
setTimeout(function(){console.log("Hello")},1000)
}
Этот код выполняет правильно, как и ожидалось:
var i = 0;
function loop(){
setTimeout(function(){
console.log("Hello" + " " + Number(i+1))
i++
if(i<3){
loop()
}
},1000)
loop()
Мой вопрос: почему? Это связано с синхронным однопоточным характером JavaScript? как так? Объяснение, почему это происходит, - мой вопрос.
Могу ли я добиться результата второго кода, используя цикл? – JohnSnow
вы можете использовать 'setInterval' вместо этого и остановить его после 4 итераций – ValLeNain
Как именно? Можете ли вы опубликовать код – JohnSnow