--- title: Вираз асинхронної функції slug: Web/JavaScript/Reference/Operators/async_function tags: - JavaScript - Оператор - Функція translation_of: Web/JavaScript/Reference/Operators/async_function ---
Ключове слово async function може використовуватись для визначення асинхронних функцій всередині виразів.
Ви також можете визначати асинхронні функції за допомогою оголошення async function.
async function [name]([param1[, param2[, ..., paramN]]]) {
statements
}
Починаючи з ES2015 ви також можете використовувати стрілкові функції.
nameparamNstatementsВираз 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")}}