Зачем вообще нужна асинхронность
JavaScript выполняет код построчно, по очереди. Но некоторые операции — например, загрузка данных с сервера — занимают время, и ждать их завершения, полностью останавливая всю страницу, было бы неудобно для пользователя.
Асинхронность позволяет запустить долгую операцию, продолжить выполнение остального кода, а результат обработать, когда он будет готов — без «зависания» интерфейса.
Promise — обещание будущего результата
Promise — это объект, который представляет результат операции, которая ещё не завершена. У него три состояния: ожидание, успех и ошибка. Когда операция завершается, Promise «выполняется» с результатом или ошибкой.
async/await — более понятный синтаксис
async/await — это способ работать с промисами так, чтобы код выглядел как обычный последовательный код, а не вложенные друг в друга обработчики. Функция помечается словом `async`, а внутри неё `await` «ждёт» результат, не блокируя остальную страницу.
Частые вопросы
Когда стоит изучать асинхронность?
Что проще — Promise или async/await?
Что дальше
Разбери асинхронность без пропущенных шагов
Курс JavaScript объясняет даже сложные темы вроде асинхронности на понятных практических примерах.