Название главы
- Цель
- Предварительные требования
- Основная часть главы, где преподносится материал. В этой части могут быть несколько подглав.
- Практическое(-ие) задание(-я)
- Глоссарий (определения тернинов)
- Список литературы (ссылок)
Пример
Что такое async/await и как их использовать
Цель
В этой главе мы рассмотрим для чего нужны ключевые слова async
и await
и как с помощью этих слов можно упростить написание асинхронного кода.
Предварительные требования
Для того, чтобы успешно освоить материал этой главы, нужно иметь представление о Promise.
Основы async/await
Для тех, кто не знаком с async/await, вот основные вещи, которые полезно будет знать прежде чем двигаться дальше.
- Async/await — это новый способ написания асинхронного кода. Раньше подобный код писали, пользуясь коллбэками и промисами.
- Наше предложение «забыть о промисах» не означает, что они потеряли актуальность в свете новой технологии. На самом деле, в основе async/await лежат промисы. Нужно учитывать, что этот механизм нельзя использовать с коллбэками.
- Конструкции, построенные с использованием async/await, как и промисы, не блокируют главный поток выполнения программы.
- Благодаря async/await, асинхронный код становится похожим на синхронный, да и в его поведении появляются черты такого кода, весьма полезные в некоторых ситуациях, в которых промисами пользоваться было, по разным причинам, неудобно. Но раньше без них было не обойтись. Теперь же всё изменилось. Именно тут кроется мощь async/await.
Почему async/await лучше промисов?
Рассмотрим обещанные шесть преимуществ async/await перед традиционными промисами.
1. Лаконичный и чистый код
Сравнивая два вышеприведённых примера, обратите внимание на то, насколько тот, где используется async/await, короче. И ведь речь, в данном случае, идёт о маленьких кусках кода, а если говорить о реальных программах, экономия будет ещё больше. Всё дело в том, что не нужно писать
....
Практическое задание
Написать функцию getRandomNumber
, которая через секунду возвращает случайное число от 1 до 100. Вызвать эту функцию 10 раз в цикле, таким образом, чтобы каждое следующее число генерировалось после предидущего. Вывести каждое сгенерированное число в консоль с точным временем генерации, включая миллисекунды.
Подсказка: использовать цикл for
и вызов getRandomNumber
осуществить через await.
Глоссарий
Термин | Значение |
---|---|
Promise | A Promise represents a value that may not be available yet but will eventually be resolved at some point in the future. The point is to allow developers to write asynchronous code in a more synchronous fashion, escaping from the popular callback hell. |
Промис | см.Promise |
Ссылки
- О промисах https://learn.javascript.ru/promise
- Async/await: 6 причин забыть о промисах https://habrahabr.ru/company/ruvds/blog/326074/