Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: async, await, promise, asynchronous, JavaScript

ав

Вопрос проверяет понимание принципов асинхронного программирования в JavaScript, что необходимо для эффективной работы с операциями ввода-вывода без блокировки основного потока.

Короткий ответ

Ключевые слова async и await используются в JavaScript для упрощенной работы с асинхронными операциями, основанными на промисах. Функция, объявленная с async, всегда возвращает промис, а await приостанавливает выполнение функции до разрешения промиса. Это делает асинхронный код более читаемым и похожим на синхронный, уменьшая сложность цепочек .then(). Например, вместо fetch().then() можно написать const data = await fetch().

Длинный ответ

Ключевые слова async и await представляют собой синтаксический сахар над промисами в JavaScript, введенный в стандарте ES2017. Они позволяют писать асинхронный код в более линейном и интуитивно понятном стиле, избегая сложных цепочек методов .then() и .catch().

Как это работает

Когда вы объявляете функцию с ключевым словом async, она автоматически возвращает объект Promise. Внутри такой функции вы можете использовать оператор await перед любым выражением, которое возвращает промис. Выполнение функции приостанавливается на этом месте до тех пор, пока промис не будет разрешен (fulfilled или rejected), после чего оно продолжается, и await возвращает результат разрешенного промиса.

Практическое применение и примеры

Этот подход широко применяется при работе с API, чтении файлов, запросах к базам данных или любых других операциях, где необходимо ожидать завершения без блокировки основного потока выполнения. Рассмотрим пример получения данных с удаленного сервера.

// Функция для получения данных пользователя с использованием async/await
async function fetchUserData(userId) {
    try {
        // Ожидаем ответ от API
        const response = await fetch(`https://api.example.com/users/${userId}`);
        // Проверяем статус ответа
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        // Ожидаем преобразование ответа в JSON
        const userData = await response.json();
        console.log(userData);
        return userData;
    } catch (error) {
        // Обрабатываем возможные ошибки
        console.error('Failed to fetch user data:', error);
    }
}

// Вызов функции
fetchUserData(123);

В этом примере код выглядит последовательно, как если бы он был синхронным. Обработка ошибок осуществляется с помощью привычного блока try...catch, что является большим преимуществом по сравнению с отдельными обработчиками .catch() для промисов.

Важные нюансы

  • await можно использовать только внутри async-функций (или на верхнем уровне в модулях).
  • Несмотря на линейный вид, выполнение кода не блокирует основной поток — движок JavaScript может выполнять другие задачи, пока промис ожидает разрешения.
  • Параллельное выполнение нескольких асинхронных операций можно организовать с помощью Promise.all().

Итог: Используйте async/await для упрощения асинхронного кода, особенно когда логика включает последовательные операции или сложную обработку ошибок. Этот подход делает код чище, удобнее для чтения и отладки по сравнению с классическими цепочками промисов.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#async

#await

#promise

#asynchronous

#JavaScript

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию