Одна из особенностей JS заключается в том, что среды выполнения различаются, и вы, похоже, знакомы с различными доступными механизмами.
В Chrome alert
- это метод блокировки, который останавливает выполнение.
Рассмотрим этот пример:
(() => {
for (let i = 0; i < 10; i++) {
setTimeout(() => console.log(i), i*1000)
}
setTimeout(() => alert('World'), 1000)
setTimeout(() => alert('Mars'), 5000)
})()
Вы увидите, что счетчик останавливается и возобновляет работу после того, как предупреждение было отменено.Однако ваши ожидания верны, когда JS обычно считается non-blocking
, и чаще всего такие методы, как setTimeout
, будут запускаться асинхронно (например, в цикле for, где таймер должен быть увеличен для желаемого поведения).).