13 Ноя в 09:40
14 +14
0
Ответы
1
Это асинхронная установка таймера: функция `() => console.log('timeout')` будет поставлена в очередь задач и выполнится не сразу, а после завершения текущего стека вызовов и микрозадач.
Ключевые моменты:
- `setTimeout(..., 0\,00)` не выполняет коллбэк мгновенно — минимальная задержка заявлена как 0\,00 мс, но фактически коллбек выполнится только когда event loop перейдёт к фазе макрозадач.
- Микрозадачи (например, `Promise.resolve().then(...)` и `process.nextTick` в Node) выполняются раньше, чем коллбеки `setTimeout`.
- В браузерах есть "clamping": при повторных вложенных таймаутах задержка может быть ограничена примерно 4\,44 мс; в фоновый вкладках могут применяться ещё большие ограничения.
- В Node таймеры обрабатываются на фазе `timers`, поэтому тоже будут выполнены после текущего кода и после микрозадач.
Пример порядка исполнения:
console.log('start');
setTimeout(() => console.log('timeout'), 0\,00);
Promise.resolve().then(() => console.log('promise'));
console.log('end');
Вывод будет: `start`, `end`, `promise`, `timeout`.
13 Ноя в 09:48
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир