Вираз асинхронної функції
Ключове слово 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.
Див. також
async function
- Об'єкт
AsyncFunction
await