Вираз асинхронної функції

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

Ви також можете визначати асинхронні функції за допомогою оголошення async function.

Синтаксис

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

Починаючи з ES2015 ви також можете використовувати стрілкові функції.

Параметри

name
Ім'я функції. Його можна пропустити, в цьому випадку функція буде анонімною. Ім'я доступне лише всередині тіла функції.
paramN
Ім'я аргумента, що передається у функцію.
statements
Інструкції, які складають тіло функції.

Опис

Вираз async function дуже схожий, та має майже такий самий синтаксис, як оголошення async function. Головною відмінністю між виразом асинхронної функції та оголошенням асинхронної функції є ім'я функції, яке можна пропустити у виразі async function, щоб створити анонімну функцію. Вираз async function може використовуватись як НВФВ (негайно виконуваний функціональний вираз), який виконується одразу після визначення. Більше інформації дивіться у главі про функції.

Приклади

Простий приклад

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


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 секунди.
});


(async function(x) { // вираз асинхронної функції використовується як НВФВ
  var p_a = resolveAfter2Seconds(20);
  var p_b = resolveAfter2Seconds(30);
  return x + await p_a + await p_b;
})(10).then(v => {
  console.log(v);  // виводить 60 через 2 секунди.
});

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

Специфікація Статус Коментар
ECMAScript (ECMA-262)
The definition of 'async function' in that specification.
Living Standard
ECMAScript 2018 (ECMA-262)
The definition of 'async function' in that specification.
Standard
ECMAScript 2017 (ECMA-262)
The definition of 'async function' in that specification.
Standard Початкове визначення.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
async function expressionChrome Full support 55Edge Full support 15Firefox Full support 52IE No support NoOpera Full support 42Safari Full support 10.1WebView Android Full support 55Chrome Android Full support 55Firefox Android Full support 52Opera Android Full support 42Safari iOS Full support 10.3Samsung Internet Android Full support 6.0nodejs Full support 7.6.0
Full support 7.6.0
Full support 7.0.0
Disabled
Disabled From version 7.0.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Див. також