--- 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 ви також можете використовувати стрілкові функції.
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")}}