Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Ключевое слово async function исползуется для определения асинхронной функции внутри выражений.

Вы также можете определить асинхронные функции при помощи инструкции async function.

Синтаксис

async function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

Согласно спецификации ES2015, вы также можете использовать стрелочные функции.

Параметры

name
Имя функции. Этот параметр может быть опущен, в этом случае говорят об анонимной функции. Имя используется только в теле функции.
paramN
Имя аргумента, передаваемого функции.
statements
Инструкции, составляющие тело функции.

Описание

Выражение async function очень похоже, и имеет почти тот же синтаксис, что и async function statement. Главное отличие между выражениями async function и объявлениями async function заключается в имени функции, которое может быть опущено в выражении async function для создания анонимной функции. Выражение async function можно использовать в виде IIFE (Immediately Invoked Function Expression), и оно будет запущено сразу после объявления. См. также главу о функциях.

Примеры

Простой пример

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
};

(async function(x) { // выражение асинхронной функции в виде IIFE
  var a = resolveAfter2Seconds(20);
  var b = resolveAfter2Seconds(30);
  return x + await a + await b;
})(10).then(v => {
  console.log(v);  // выведет 60 после 2 секунд.
});

var add = async function(x) { // назначение выражения асинхронной функции переменной
  var a = await resolveAfter2Seconds(20);
  var b = await resolveAfter2Seconds(30);
  return x + a + b;
};

add(10).then(v => {
  console.log(v);  // выведет 60 после 4 секунд.
});

Спецификации

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
Определение 'async function' в этой спецификации.
Черновик Initial definition in ES2017.

Поддержка браузерами

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer  Edge Opera Safari (WebKit)
Basic support 55 52.0 (52.0) ? ? 42 ?
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? ? 52.0 (52.0) ? 42 ? 55

Смотри также

Метки документа и участники

Внесли вклад в эту страницу: utlov, mdnwebdocs-bot, myscode, nakhodkiin, ahtohbi4
Обновлялась последний раз: utlov,