Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что происходит, если не использовать await при вызове асинхронной функции?

Вопрос проверяет понимание работы асинхронных функций и ключевого слова await в JavaScript/TypeScript, что необходимо для корректной обработки асинхронных операций и избегания ошибок.

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

Если не использовать await при вызове асинхронной функции, то вместо ожидания результата операции функция вернет объект Promise в состоянии pending. Это означает, что код продолжит выполняться синхронно, не дожидаясь завершения асинхронной задачи, что может привести к использованию неразрешенного значения. Например, если функция fetchData возвращает Promise, то без await переменная получит сам Promise, а не данные из него, что вызовет ошибки при попытке работы с данными как с обычным объектом.

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

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

Что происходит без await

Когда асинхронная функция вызывается без await, она начинает выполнение, но управление немедленно возвращается вызывающему коду. Это означает, что последующие операции могут выполняться до завершения асинхронной задачи, что приводит к состоянию гонки (race condition) или использованию неготовых данных.

Пример кода

async function fetchData() {
    // Имитация асинхронной операции, например, запроса к API
    return new Promise(resolve => setTimeout(() => resolve('Данные получены'), 1000));
}

async function process() {
    // Вызов без await
    const dataPromise = fetchData();
    console.log(dataPromise); // Выведет: Promise { <pending> }
    // Попытка использовать Promise как строку вызовет ошибку
    // console.log(dataPromise.toUpperCase()); // Ошибка!
    
    // Правильный вызов с await
    const data = await fetchData();
    console.log(data); // Выведет: 'Данные получены' (через 1 секунду)
}

process();

Где это применяется

Иногда намеренный вызов без await полезен, когда нужно запустить несколько асинхронных операций параллельно для повышения производительности. Например, можно запустить несколько запросов одновременно, а затем использовать Promise.all для ожидания всех результатов.

Вывод

Используйте await для ожидания результата асинхронной функции, когда последующий код зависит от этого результата. Если нужно выполнить операции параллельно или управлять Promise вручную, можно опустить await, но тогда требуется явная обработка Promise с помощью методов .then() или .catch().

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • TypeScript

    TypeScript

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

#async

#await

#Promise

#asynchronous function

#JavaScript

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.