В мире программирования важно эффективно обрабатывать асинхронные операции, чтобы обеспечить привлекательный пользовательский опыт. Особенно в JavaScript есть множество способов это сделать. Один из самых популярных методов работы с асинхронными операциями — это конструкция async/await. Она включает в себя синтаксическое упрощение, которое позволяет сделать асинхронное программирование более понятным и читаемым. Давайте в этом руководстве познакомимся с основами async и await и как они могут улучшить ваш код.
Основные выводы
- async/await предоставляет ясный и упрощённый синтаксис для работы с асинхронными операциями.
- Любая функция, использующая ключевое слово await, должна быть объявлена как async.
- await эффективно ожидает выполнения Promise, прежде чем код будет выполнен дальше.
- Обработку ошибок можно элегантно реализовать с помощью блоков try/catch.
Пошаговое руководство
Сначала вам нужно убедиться, что вы понимаете основы Promise, так как async/await основан на них. Если вы знакомы с Promise, мы можем обсудить использование async/await.
Шаг 1: Создание функции задержки
Начните с простой функции, которая возвращает Promise, имитирующий задержку. Вот пример функции с именем delay.
Это базовая реализация. С помощью этой функции вы можете задать задержку в миллисекундах.

Шаг 2: Введение в Async и Await
Теперь вы хотите воспользоваться преимуществами async/await. Начните с создания функции, которая использует ключевое слово async.
В этом фрагменте кода функция runDelay использует ключевое слово async, что позволяет ей использовать await. Это означает, что выполнение функции приостанавливается до тех пор, пока Promise, возвращаемый функцией delay, не будет выполнен.
Шаг 3: Тестирование асинхронной функции
Чтобы протестировать, как это работает, вызовите функцию runDelay.
Когда вы выполните скрипт, вы увидите, что консоль выводит «Запуск задержки...», затем пауза на 2 секунды и, наконец, появится сообщение «Задержка завершена».
Шаг 4: Обработка ошибок с помощью try/catch
Это часто происходит в программировании — ошибки могут возникать в любое время. С помощью async/await вы можете проще обрабатывать ошибки с помощью try/catch.
Если вы хотите перехватить ошибки, вы можете модифицировать функцию runDelay следующим образом:
Используя try/catch, можно перехватить и отобразить любую ошибку, возникающую во время выполнения await delay(2000).

Шаг 5: Использование fetch с async/await
Ещё один распространённый случай — получение данных с помощью API fetch.
В этом примере с помощью fetch выполняется сетевой запрос. Снова мы можем с помощью await удостовериться, что ждём ответа, прежде чем продолжать.
Резюме - Async и Await: Пошаговое руководство
В этом руководстве вы узнали, как с помощью конструкции async/await в JavaScript можно яснее обрабатывать асинхронные операции. Вы увидели, как создать задержку, как обрабатывать ошибки и как эффективно получать данные с помощью API fetch.
Используйте этот синтаксис в своих будущих проектах, чтобы сделать ваш код более читаемым и поддерживаемым!
Часто задаваемые вопросы
В чем разница между async и await?async пометает функцию как асинхронную, что означает, что она возвращает Promise. await используется для ожидания результата Promise.
Когда следует использовать async/await?Используйте его, когда работаете с асинхронными процессами и хотите, чтобы ваш код оставался ясным и читаемым.
Могу ли я использовать async/await в любом браузере?Да, но убедитесь, что используемый браузер поддерживает современный синтаксис JavaScript. При необходимости могут быть использованы транспилеры, такие как Babel.
Могу ли я использовать await в обычной функции?Нет, чтобы использовать await, функция, в которой он используется, должна быть объявлена как async.
Что происходит, если Promise завершается неудачей?Если Promise завершается неудачей, возникает ошибка, которая может быть обработана с помощью try/catch.