Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Как запустить асинхронную функцию?

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

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

Асинхронную функцию можно запустить несколькими способами. Самый простой — вызвать её напрямую, но так как она возвращает промис, результат нужно обработать. Можно использовать ключевое слово await внутри другой async-функции. Также можно использовать метод .then() для обработки результата промиса. Важно помнить, что вызов без await или .then() выполнит функцию, но вы не получите её результат.

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

Асинхронная функция в JavaScript всегда возвращает объект Promise. Это означает, что её вызов инициирует асинхронную операцию, результат которой будет доступен в будущем. Понимание способов запуска критично для корректной работы с асинхронным кодом, избегания блокировки основного потока и обработки возможных ошибок.

Основные способы запуска

  • Вызов напрямую: Функция выполнится, но возвращённый промис будет находиться в состоянии pending, пока операция не завершится. Чтобы получить результат, нужно прикрепить обработчики.
  • Использование .then() и .catch(): Это классический подход работы с промисами. Метод .then() обрабатывает успешное выполнение, а .catch() — ошибки.
  • Использование await: Ключевое слово await можно использовать только внутри другой async-функции. Оно приостанавливает выполнение текущей функции до разрешения промиса, возвращая его результат.

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

Рассмотрим асинхронную функцию, которая имитирует задержку.

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

// Способ 1: Использование .then()
fetchData().then(result => {
  console.log(result); // 'Данные получены'
}).catch(error => {
  console.error(error);
});

// Способ 2: Использование await внутри async IIFE (немедленно вызываемая функция)
(async () => {
  try {
    const result = await fetchData();
    console.log(result); // 'Данные получены'
  } catch (error) {
    console.error(error);
  }
})();

// Способ 3: Простой вызов (не рекомендуется, так как результат теряется)
// fetchData(); // Промис создан, но не обработан.

Первый способ (.then()) хорошо подходит для цепочек промисов или когда не нужно приостанавливать выполнение окружающего кода. Второй способ (await) делает код более линейным и читаемым, особенно при нескольких последовательных асинхронных вызовах.

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

Асинхронные функции и их запуск повсеместно используются при работе с API (fetch), файловой системой (в Node.js), таймерами, базами данных и любыми другими операциями ввода-вывода, которые могут занять время.

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

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

#async function

#await

#promise

#then

#asynchronous

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