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

Ключове слово 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 Початкове визначення.

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

No compatibility data found for javascript.operators.async_function_expression.
Check for problems with this page or contribute missing data to mdn/browser-compat-data.

Див. також