Браузер и фронтенд-рантайм
Event loop: тест на припоминание
Припоминание сильнее перечитывания. На каждый промпт сначала проговори или запиши полный ответ по памяти — именно усилие припоминания закрепляет модель тайминга loop.
Реконструируй ключевые механизмы юнита — пятишаговую итерацию, microtask checkpoint, троттлинг таймеров, режим starvation, пайплайн INP→LoAF и переупорядочивание в Node — не подсматривая в уроки.
- 01Пройди одну полную итерацию browser event loop, называя, что выполняется и когда каждый шаг пропускается.
- 02Почему await Promise.resolve() не уступает поток браузеру, хотя приостанавливает вызывающую функцию, и что реально уступает поток?
- 03Назови три слоя троттлинга, складывающихся на точность setTimeout, и одно правило, связывающее их.
- 04Опиши режим microtask starvation, как он выглядит в DevTools и один production-сценарий, где он появляется случайно.
- 05Ты видишь регрессию INP в production. Пройди пайплайн от LoAF до фикса, превращающий метрику в развёртываемое изменение.
- 06Как Node event loop переупорядочивает всё относительно браузера и что является headless-эквивалентом INP?
Если ты смог реконструировать каждый ответ по памяти — у тебя есть позвоночник юнита: один task выполняется до завершения, затем microtask checkpoint дренируется полностью до любого кадра, затем рендеринг идёт только на границе кадра. Microtask никогда не уступают поток рендереру — это делают только task — поэтому самопланирующиеся microtask и starve страницу. Таймеры — нижние границы, троттленные тремя складывающимися слоями. INP измеряет воспринимаемую стоимость, LoAF плюс sourcemap её атрибутируют, а Node прогоняет всю модель заново с process.nextTick, поднятым выше microtask, и event-loop lag вместо INP.