Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

async function-Ausdruck

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.

Mit den Schlüsselwörtern async function können Sie eine asynchrone Funktion innerhalb eines Ausdrucks definieren.

Sie können asynchrone Funktionen auch mit einer async function-Deklaration oder der Pfeilfunktionssyntax definieren.

Syntax

js
async function (param0) {
  statements
}
async function (param0, param1) {
  statements
}
async function (param0, param1, /* …, */ paramN) {
  statements
}

async function name(param0) {
  statements
}
async function name(param0, param1) {
  statements
}
async function name(param0, param1, /* …, */ paramN) {
  statements
}

Hinweis: Eine Ausdrucksanweisung darf nicht mit den Schlüsselwörtern async function beginnen, um Mehrdeutigkeiten mit einer async function-Deklaration zu vermeiden. Die Schlüsselwörter async function leiten nur dann einen Ausdruck ein, wenn sie in einem Kontext stehen, in dem keine Anweisungen zulässig sind.

Parameter

name Optional

Der Funktionsname. Er kann weggelassen werden; in diesem Fall ist die Funktion anonym. Der Name ist nur innerhalb des Funktionskörpers verfügbar.

paramN Optional

Der Name eines formalen Parameters der Funktion. Informationen zur Syntax von Parametern finden Sie in der Referenz zu Funktionen.

statements Optional

Die Anweisungen, aus denen der Funktionskörper besteht.

Beschreibung

Ein async function-Ausdruck ähnelt einer async function-Deklaration stark und hat nahezu dieselbe Syntax. Der Hauptunterschied ist der Funktionsname: In einem async function-Ausdruck kann er weggelassen werden, um eine anonyme Funktion zu erstellen. Ein async function-Ausdruck kann als IIFE (Immediately Invoked Function Expression) verwendet werden. Diese wird unmittelbar nach ihrer Definition ausgeführt und ermöglicht es Ihnen, top-level await nachzubilden. Weitere Informationen finden Sie im Kapitel über Funktionen.

Beispiele

Einen async function-Ausdruck verwenden

js
function resolveAfter2Seconds(x) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

// async function expression assigned to a variable
const add = async function (x) {
  const a = await resolveAfter2Seconds(20);
  const b = await resolveAfter2Seconds(30);
  return x + a + b;
};

add(10).then((v) => {
  console.log(v); // prints 60 after 4 seconds.
});

// async function expression used as an IIFE
(async function (x) {
  const p1 = resolveAfter2Seconds(20);
  const p2 = resolveAfter2Seconds(30);
  return x + (await p1) + (await p2);
})(10).then((v) => {
  console.log(v); // prints 60 after 2 seconds.
});

Asynchrone IIFE

Mit einer asynchronen IIFE können Sie await und for...await in Kontexten verwenden, in denen top-level await nicht verfügbar ist. Hier verwenden wir eine Pfeilfunktion, um die IIFE zu definieren. Sie können dafür aber auch async function-Ausdrücke verwenden.

js
const getFileStream = async (url) => {
  // implementation
};

(async () => {
  const stream = await getFileStream("http://hfffh89d85a7bece740f3sv6oc96ofcuub6cpk.ffgi.hlju.cwkeji.cn/path/file.ext");
  for await (const chunk of stream) {
    console.log({ chunk });
  }
})();

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-async-function-definitions

Browser-Kompatibilität

Siehe auch