Встречается на собеседованиях • сегодня

Расскажи про async await

`async`/`await` — это синтаксический сахар для работы с асинхронными операциями, делающий код, работающий с асинхронными действиями, такими как запросы к серверу или чтение файлов, более читаемым и легким для понимания. Этот синтаксис был введен в ES2017 (ES8) и строится на промисах (Promises).

Ключевое слово `async`

Используется перед объявлением функции. Это позволяет функции автоматически возвращать промис. Если эта функция возвращает не промис, то возвращаемое значение будет автоматически обернуто в промис.

javascript
async function fetchData() {
  return 'данные';
}

fetchData().then(data => console.log(data)); // выводит "данные"

Ключевое слово `await`

Используется для ожидания результата промиса внутри асинхронной функции

`async`. Оно приостанавливает выполнение асинхронной функции до тех пор, пока промис не выполнится (т.е. не будет разрешен или отклонен). ЕЕ можно использовать только внутри асинхронных функций.

javascript
async function fetchData() {
  let data = await fetch('https://api.example.com/data');
  let json = await data.json();
  return json;
}

В этом примере функция `fetchData` сначала ожидает завершения HTTP-запроса к серверу, а затем ожидает завершения преобразования ответа в формат JSON. Весь этот процесс асинхронный, но благодаря `await` код выглядит как синхронный.

Преимущества использования:

  • Улучшение читаемости кода: Асинхронный код, написанный с использованием `async`/`await`, выглядит более структурированным и похожим на синхронный код, что упрощает его понимание.
  • Упрощение обработки ошибок: В асинхронных функциях с `await` можно использовать стандартный синтаксис `try`/`catch` для обработки ошибок, что делает код единообразнее.
  • Избегание "callback hell": Использование `async`/`await` позволяет избежать сложностей с вложенными коллбэками, которые могут возникнуть при использовании промисов или старого стиля асинхронного кода с коллбэками.

Важно помнить

  • `await` приостанавливает выполнение только текущей асинхронной функции, не блокируя выполнение другого кода.
  • `await` может использоваться только внутри функций, объявленных с `async`.
  • Внутри асинхронных функций `async` можно использовать множество операторов `await` для последовательного выполнения зависимых друг от друга асинхронных операций.

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

Feb. 26, 2024, easyoffer

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы