Что такое асинхронность?
Асинхронность и Event Loop
Асинхронность — это модель выполнения, при которой долгие операции не блокируют основной поток. Код запускает операцию и продолжает работу, а результат обрабатывает позже через коллбэк, промис или await.
Зачем она нужна
JavaScript однопоточный: пока выполняется синхронный код, интерфейс «замирает». Сетевые запросы, таймеры, чтение файлов могут длиться долго — их выполняют асинхронно, чтобы страница оставалась отзывчивой.
Как реализуется
- Долгие операции уходят в Web API / систему (таймеры, сеть, I/O).
- По готовности их коллбэк попадает в очередь задач.
- Event Loop выполняет коллбэк, когда стек освободится.
Эволюция подходов
// 1. Колбэки — легко получить «callback hell»
getUser(id, (user) => getPosts(user, (posts) => render(posts)));
// 2. Промисы — плоские цепочки
getUser(id).then(getPosts).then(render);
// 3. async/await — синхронный вид
const user = await getUser(id);
const posts = await getPosts(user);
render(posts);Главное
- Асинхронность ≠ многопоточность: код всё равно в одном потоке, просто выполняется по частям.
- Тяжёлые вычисления лучше выносить в Web Workers, а не «размазывать» по event loop.
Коротко для собеседования
Асинхронность позволяет не блокировать поток на долгих операциях: их запускают, а результат обрабатывают позже через Event Loop. Инструменты — колбэки, промисы, async/await.