> Почему sleep(100) отработает примерно через 100 мс и может ли быть 99 мс? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
В JavaScript sleep(100) не является нативной функцией - обычно это либо setTimeout с колбэком, либо синтаксическая обёртка await new Promise(r => setTimeout(r, 100)). Таймеры в браузере и Node.js имеют минимальную задержку (обычно 4 мс для вложенных таймеров) и не гарантируют точного времени из-за цикла событий (event loop).
setTimeout(fn, 100) ставит задачу в очередь через ~100 мс, но выполнение начнётся только после завершения текущего синхронного кода и всех задач в очереди микротасок. Если в момент срабатывания таймера выполняется другой код (например, тяжёлый цикл или обработка события), задержка увеличится. Поэтому 99 мс быть не может - минимальное значение будет ≥100 мс (с учётом погрешности и округления до ближайшего тика таймера, который в браузерах обычно 4 мс). В Node.js с --expose-gc и высокоточными таймерами возможно отклонение в ±1 мс, но 99 мс - это крайне маловероятно из-за накладных расходов на планирование.
> Похожие задачи по frontend
Когда вызывается колбэк в JavaScript и что его триггерит
Работали ли вы с фреймворком Electron?
Как работает метод массива some?
Почему нельзя использовать forEach для реализации some с прерыванием?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью