Синхронные промисы 🤯 — 15 мая 2026 г. в 12:45:58.800
Синхронные промисы 🤯 Одна из раздражающих черт промисов — «постоянная асинхронность». Даже если промис уже в терминальном состоянии, любая попытка прочитать его значение или обработать статус всё равно идёт через создание микротаски. У такого подхода есть мотивация и дизайнерское оправдание. Но это сужает круг возможного использования промисов. Почему? Главным образом — из-за производительности. Event Loop — это клубок с бесконечными событиями и очередями, где постоянно что-то происходит. Когда мы создаём микротаску, мы откладываем выполнение кода на потом. Да, этот «потом» выглядит очень близким, но вместо того чтобы сразу получить данные и начать с ними работать, мы встаём в очередь. А очередь может быть переполнена. И мы ждём, пока все, кто встал раньше, закончат работу. А они могут быть не очень расторопными… Вот и получается, что постоянно приходится думать: стоит оно того или нет? Но есть и другое решение, которое в ряде задач позволяет сохранить изящество и гибкость. Нужно сделать свой промис, но с доработкой: если промис уже финализирован, его обработчики должны выполняться немедленно. Главная прелесть в том, что для обычных промисов наш промис будет выглядеть родным (Thenable), но при этом позволит более точечно и с минимальными изменениями контролировать процесс вычисления. Если вы думаете, что написать свой промис — это что-то сложное, то готов вас заверить: это не так и потребует не так много кода. А опыт, полученный в процессе реализации, позволит вам лучше понять устройство и работу настоящих промисов. Но самое классное — теперь мы можем использовать универсальный асинхронный интерфейс и для синхронных задач. Зачем? Две причины: • Контролируемая обработка ошибок на уровне контейнеров и типов, а не через исключения. • Готовность кода стать асинхронным в любой момент. То есть если у вас есть модуль для работы с localStorage, и вы сразу спроектировали асинхронный интерфейс, то потом в любой момент сможете перейти на другое хранилище (например, IndexedDB или сервер). Про универсальность интерфейса промисов будем много говорить в субботу и воскресенье. А сегодня начнём с асинхронности как таковой. Всё готово к запуску, не хватает только тебя. Так что если ты ждал последний момент, чтобы заскочить — это он! [ Присоединиться к интенсиву ] До встречи в 19:00 на первой лекции 🔥

