Das async function Schlüsselwort kann benutzt werden, um async Funktionen in Ausdrücken zu benutzen.

Man kann asynchrone Funktionen auch mit einem async Funktionsstatement definieren.

Syntax

async function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

Seit ES2015 kann man auch Pfeilfunktionen benutzen.

Parameter

name
Der Funktionsname. Kann weggelassen werden, wenn die Funktion anonym ist. Der Name ist nur lokal im Funktionsrumpf erreichbar.
paramN
Der Name eines Arguments, welches der Funktion übergeben wird.
statements
Die Statements, welche den Funktionsrumpf definieren.

Beschreibung

Ein async function Ausdruck ist sehr ähnlich zu async Funktionsstatements und haben fast die selbe Syntax. Der Hauptunterschied zwischen einem async Funktionsausdruck und einem async Funktionsstatement ist der Funktionsname, welcher bei async Funktionsausdrücken weggelassen werden kann, um anonyme Funktionen zu erstellen. Ein async Funktionsausdruck kann als IIFE (Immediately Invoked Function Expression) genutzt werden, welche Ausgeführt werden, nachdem sie definiert wurde. Mehr Informationen dazu gibt es im Kapitel über Funktionen.

Beispiele

Einfaches Beispiel

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


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

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


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

Spezifikationen

Spezifikation Status Kommentar
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'async function' in dieser Spezifikation.
Entwurf Initiale Definition in ES2017.

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidEdge MobileFirefox für AndroidOpera für AndroidiOS SafariSamsung InternetNode.js
Grundlegende UnterstützungChrome Vollständige Unterstützung 55Edge ? Firefox Vollständige Unterstützung 52IE Keine Unterstützung NeinOpera Vollständige Unterstützung 42Safari Vollständige Unterstützung 10.1WebView Android Vollständige Unterstützung 55Chrome Android Vollständige Unterstützung 55Edge Mobile ? Firefox Android Vollständige Unterstützung 52Opera Android Vollständige Unterstützung 42Safari iOS Vollständige Unterstützung 10.1Samsung Internet Android Vollständige Unterstützung 6.0nodejs Vollständige Unterstützung 7.6.0
Vollständige Unterstützung 7.6.0
Vollständige Unterstützung 7.0.0
Deaktiviert
Deaktiviert From version 7.0.0: this feature is behind the --harmony runtime flag.

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Kompatibilität unbekannt  
Kompatibilität unbekannt
Benutzer muss dieses Feature explizit aktivieren.
Benutzer muss dieses Feature explizit aktivieren.

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,