Автор оригинала: FreeCodeCamp Community Member.
Tiago Lopes Ferreira
async / ждать Является ли новый синтаксис JavaScript для объявления асинхронной функции. Он построен на обещаниях, но легче использовать.
Тщательное объяснение обещаний выходит за рамки этой статьи. Если вы новичок в обещаниях в JavaScript, пожалуйста, смотрите Использование обещаний Узнать больше. Не существенно быть экспертом по обещаниям, но хорошее введение поможет вам научиться async / ждать Отказ
Вот быстрое напоминание о том, как писать и использовать обещание.
Обещания
Обещание представляет собой значение, которое будет доступно сейчас, в будущем или (возможно) никогда.
Состояние обещания может быть одним из следующих:
- В ожидании – Обещание не было ни решета, ни отклонено. Это представляет первоначальное состояние обещания.
- разрешено – Операция, завернутая обещанием, успешно завершена.
- отклонено – Операция не удалась.
getrandomwithpromise ()
Определяет обещание, которое решается со случайным числовым значением. Setimeout ()
Имитает задержку асинхронной задаче, такой как HTTP-запрос.
Вот пример того, как мы можем использовать getrandomwithpromise ()
Отказ
async/a ждать
async / ждать Это пара оператора ключевого слова +, которая упрощает асинхронный код.
- async Объявляет функцию асинхронной.
- ждать Используется ли оператор ждать выполнения обещания. Это может быть использовано только в пределах async функция.
Давайте построим примеру, используя getrandomwithasync ()
Функция и async / ждать Отказ
Первое, что нужно заметить, это ключевое слово ASYNC объявляет, что функция асинхронная
ждать Оператор паузы getrandomwithpromise ()
пока обещание не будет выполнено.
При выполнении обещания можно:
разрешено – означает, что ждать вернет разрешенное значение.
отклонено – означает, что ждать бросит отклоненное значение.
Потому что обещание может бросить неожиданную ошибку, важно обернуть наш код внутри попробуйте / поймать блокировать.
Обратите внимание, что тело getrandomwithasync ()
Читает как это синхронная функция. Это одно из преимуществ async / ждать Отказ Это делает логику кода легко следовать, даже если это сложная работа.
Нет необходимости в отступе, как с Обещание цепь Отказ
Ждите
Важно помнить ждать можно использовать только внутри async функция. В противном случае вы получите синтаксическую ошибку.
Вот как использовать ждать С немедленно вызванной функцией выражения ( IIFE ).
Классы
Мы также можем создать async Функции внутри классов.
Несколько обещаний
Что делать, если у нас будет более одного обещания выполнить перед продолжением?
Мы можем сделать это двумя способами – последовательно или одновременно.
Последовательный
Обещание B выполнено только после обещания выполнения. Таким образом, время выполнения функции – это сумма времени выполнения для обещаний A и B.
Это может быть серьезной проблемой производительности. Хорошая новость заключается в том, что мы можем запустить оба обещания одновременно, чтобы сэкономить время.
Одновременно
Мы можем запустить обе обещания параллельно, изменяя код. Если вы запрашиваете случайные числа и сохраните обещания, они будут работать одновременно. Мы ждем обоих обещаний, чтобы завершить, используя ждать в отдельных выражениях. Результат отображается, когда они оба полны
Время выполнения функций равно обещанию, которое занимает самое длинное время.
Одновременно (с обещанием. Все)
Мы также можем использовать Обещание. Все
для параллелизма.
Одним из преимуществ является то, что Обещание. Все
имеет неудачное поведение. Если одно обещание потерпеть неудачу, обещайте. Все не будете ждать, пока другие обещания будут выполнены. Он немедленно отвергает.
ждать и озадабиться
Использование ждать Оператор не ограничен обещаниями. ждать преобразует любую не обещание ценности в ценность обещания. Это делает это, обернув ценность в Обещание Отказ
ждать Может использоваться с любым объектом, который имеет .then ()
метод. Этот объект также известен как потомется Отказ
Заключение
У нас теперь есть новый async / ждать Синтаксис из JavaScript для записи асинхронного кода.
async Это ключевое слово, которое указывает, что функция асинхронная.
ждать Используется ли оператор ждать выполнения обещания.
Синтаксис async / ждать Делает асинхронный код похожим на синхронный код. Это облегчает чтение и понимание кода.
Помните, что обещания могут генерировать неожиданные ошибки. Важно обернуть код внутри попробуйте / поймать Блок для обработки их.
Вы можете обрабатывать несколько обещаний двумя способами: последовательно или одновременно. Параллельность имеет преимущество, потому что обещания могут работать параллельно.
Наконец, оператор ждать не ограничивается обещаниями. Мы можем использовать его с любым объектом с .then ()
Метод (то есть озавёт).
Благодаря ?
- Брайан Тельсон за его Предложение Async Функции
- Николас Беваква Для этого Ponyfoo – понимание Async JavaScript ждет
- MDN – Async Function
- Для всех Время приключений поклонники
Обязательно проверите мои статьи на ES6
Demystingify ES6 Iterables & Iterators Давайте Demystify JavaScript новый способ взаимодействовать с структурами данных. Medium.freecodeCamp.org Давайте исследуем генераторы ES6 Генераторы, aka, реализация по величине. Medium.freecodeCamp.org.