Во-первых, setTimeout
, строчные буквы o
.
Во-вторых, как сказал James @ comment, это проблема блокировки, вызванная тем, что JS является однопоточным и не будет возобновлять асинхронный код (обещания, тайм-ауты, интервалы) до тех пор, пока у него не будет свободного цикла выполнения. Чтобы обойти это, вы можете обернуть более позднюю часть вашего фрагмента (цикл while) в интервал. Это даст движку JS возможность проверять готовый асинхронный код на каждой итерации while
let isDone = false;
setTimeout(() => {
isDone = true;
}, 1000);
let i = 0;
let interval = setInterval(() => {
if (isDone)
clearInterval(interval);
else
console.log(i++);
}, 0);