async function expression
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
Ключевое словоasync function
используется для определения асинхронной функции внутри выражений.
Вы также можете определить асинхронные функции при помощиинструкции async function.
Синтаксис
async function [name]([param1[, param2[, ..., paramN]]]) { statements}
Согласно спецификацииES2015, вы также можете использоватьстрелочные функции.
Параметры
name
Имя функции. Этот параметр может быть опущен, в этом случае говорят обанонимной функции. Имя используется только в теле функции.
paramN
Имя аргумента, передаваемого функции.
statements
Инструкции, составляющие тело функции.
Описание
Выражениеasync function
очень похоже, и имеет почти тот же синтаксис, что иasync function statement
. Главное отличие между выражениями asyncfunction
и объявлениями asyncfunction
заключается вимени функции, которое может быть опущено в выраженииasync function
для созданияанонимной функции. Выражениеasync function
можно использовать в видеIIFE (Immediately Invoked Function Expression), и оно будет запущено сразу после объявления. Смотрите также главу офункциях.
Примеры
Простой пример
function resolveAfter2Seconds(x) { return new Promise((resolve) => { setTimeout(() => { resolve(x); }, 2000); });}(async function (x) { // выражение асинхронной функции в виде IIFE var a = resolveAfter2Seconds(20); var b = resolveAfter2Seconds(30); return x + (await a) + (await b);})(10).then((v) => { console.log(v); // выведет 60 после 2 секунд.});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 секунд.});
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-async-function-definitions |