async
async — это ключевое слово, связанное с асинхронными операциями, которое было введено только в ES7, и тесно связано с Promise и Generator.
Синтаксис
async function name([param[, param[, ... param]]]) { statements }
- name: Имя функции.
- param: Имена параметров, передаваемых в функцию.
- statements: Операторы тела функции.
Возвращаемое значение
Асинхронная функция возвращает объект Promise, и вы можете использовать метод then, чтобы добавить функции обратного вызова.
Асинхронная функция может содержать выражения await. Когда асинхронная функция выполняется, если она встречает await, она сначала приостанавливает выполнение, а после завершения вызванной асинхронной операции возобновляет асинхронную функцию и возвращает разрешённое значение.
Ключевое слово await допустимо только внутри асинхронной функции. Если вы используете await вне тела асинхронной функции, вы получите только синтаксическую ошибку.
await
Оператор await используется для ожидания объекта Promise, и его можно использовать только внутри async-функции.
Синтаксис
[return_value] = await expression;
- expression: объект Promise или любое значение, которого нужно дождаться.
Возвращаемое значение
Возвращает результат обработки объекта Promise. Если ожидаемое значение не является объектом Promise, возвращается само значение.
Если в оператор await передан Promise, await будет ждать нормального завершения Promise и вернёт результат его обработки.
Обычно после команды await следует объект Promise, но после неё также могут следовать другие значения, такие как строки, логические значения, числа и обычные функции.
То, как await обрабатывает различные выражения, следующие за ним:
- Объект Promise: await приостанавливает выполнение, ожидает разрешения объекта Promise, затем возобновляет асинхронную функцию и возвращает разрешённое значение.
- Объект не-Promise: напрямую возвращает соответствующее значение.