--- title: Вираз асинхронної функції slug: Web/JavaScript/Reference/Operators/async_function tags: - JavaScript - Оператор - Функція translation_of: Web/JavaScript/Reference/Operators/async_function ---
{{jsSidebar("Operators")}}

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

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

Синтаксис

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

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

Параметри

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

Опис

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

Приклади

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

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

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

Специфікація Статус Коментар
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}} {{Spec2('ESDraft')}}
{{SpecName('ES2018', '#sec-async-function-definitions', 'async function')}} {{Spec2('ES2018')}}
{{SpecName('ES2017', '#sec-async-function-definitions', 'async function')}} {{Spec2('ES2017')}} Початкове визначення.

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

{{Compat("javascript.operators.async_function_expression")}}

Див. також