async/await - это синтаксический сахар для промисов, позволяющий писать их в привычном синхронном стиле.
Ключевое слово async позволяет сделать из обычной функции асинхронную.
Такая функция делает две вещи:
Оборачивает возвращаемое значение в Promise
Позволяет использовать ключевое слово await
По сути она делает следующее:
// обычная функцияfunctionhello() {return'Hello'}// асинхронная функцияasyncfunctionhello() {return'Hello'}// эквивалентноfunctionhello() {returnnewPromise((resolve, reject) => {try {// здесь может быть более сложный код, который может вернуть значение// или выбросить ошибкуresolve('Hello') } catch (error) {reject(error) } })}
Асинхронные функции становятся мощным инструментом при использовании ключевого слова await. awaitработает только в асинхронных функциях.
Мы можем использовать await перед promise-based функцией, чтобы остановить поток выполнения и дождаться результата её выполнения (результат Promise).
await можно использовать с любыми функциями, которые возвращают промис.