Sobes.tech
Junior
109
questionbank

Расскажи о конструкции async/await в JavaScript.

AI答案

sobes.tech AI

async/await — синтаксический сахар над промисами, предназначенный для более простого написания асинхронного кода, который выглядит синхронным.

Функция, помеченная словом async, всегда возвращает промис. Внутри async функции можно использовать ключевое слово await.

Оператор await используется перед вызовом промиса. Он приостанавливает выполнение async функции до тех пор, пока промис не будет выполнен (resolved) или отклонен (rejected). Результат выполнения промиса (значение успеха или ошибка) возвращается оператором await.

Если промис, перед которым стоит await, отклоняется, то это вызывает исключение, которое можно перехватить с помощью блока try...catch.

// Пример использования async/await
async function fetchData() {
  try {
    // Ожидаем выполнения асинхронной операции (например, запрос к API)
    const response = await fetch('https://api.example.com/data');
    // Парсим ответ в JSON
    const data = await response.json();
    // Выводим полученные данные
    console.log(data);
  } catch (error) {
    // Перехватываем возможную ошибку
    console.error('Ошибка при получении данных:', error);
  }
}

// Вызываем async функцию
fetchData();

// Пример async функции, возвращающей промис
async function getValue() {
  return 10; // Это автоматически оборачивается в Promise.resolve(10)
}

getValue().then(value => console.log(value)); // Выведет 10

Преимущества async/await:

  • Читаемость кода: Асинхронный код становится более похожим на синхрон
  • Обработка ошибок: Удобнее использовать стандартные try...catch блоки.
  • Меньше вложенности: Избегается "ад коллбэков" или длинные цепочки .then().

Необходимо помнить, что await может использоваться только внутри async функций.