async function expression

Baseline Widely 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. Главное отличие между выражениями async function и объявлениями async function заключается в имени функции, которое может быть опущено в выражении async function для создания анонимной функции. Выражение async function можно использовать в виде IIFE (Immediately Invoked Function Expression), и оно будет запущено сразу после объявления. Смотрите также главу о функциях.

Примеры

Простой пример

js
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® 2025 Language Specification
# sec-async-function-definitions

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
async function expression

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также