Der await Operator wird genutzt, um auf ein Promise zu warten. Er kann nur in einer async Funktion benutzt werden.

Syntax

[rv] = await expression;
expression
Ein Promise oder jeder Wert, auf den gewartet wird.
rv

Gibt den ermittelten Wert des Promise zurück, oder den Wert selber, wenn es kein Promise ist.

Beschreibung

Der await Ausdruck lässt async Funktionen pausieren, bis ein Promise fertig ist, indem es Erfolgreich oder nicht Erfolgreich beendet wird, und führt die async danach weiter aus. Wenn die Funktion weiter ausgeführt wird, ist der Wert des await Ausdrucks der ermittelte Wert des Promise.

Wenn der Promise nicht erfolgreich war, schmeißt der await Ausdruck den zurückgewiesenen Wert.

Wenn der Wert des Ausdrucks, der auf den await Operator folgt, kein Promise ist, wird dieser zu einem fertigen Promise konvertiert.

Beispiele

Wenn ein Promise im await Ausdruck genutzt wird, wartet dieser, bis das Promise fertig ist und gibt den ermittelten Wert zurück.

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

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

Wenn der Wert kein Promise ist, wird dieser zu einem fertigen Promise konvertiert und es wird darauf gewartet.

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

Wird ein Promise nicht erfolgreich beendet, wird der zurückgewiesene Wert geworfen.

async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch(e) {
    console.log(e); // 30
  }
}
f3();

Abfangen von zurückgewiesenen Promises ohne try-Block.

var response = await promisedFunction().catch((err) => { console.log(err); });
// response will be undefined if the promise is rejected

Spezifikationen

Spezifikation Status Kommentar
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'async functions' 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 AndroidSafari auf iOSSamsung InternetNode.js
Grundlegende UnterstützungChrome Vollständige Unterstützung 55Edge Vollständige Unterstützung JaFirefox Vollständige Unterstützung 52IE ? Opera Vollständige Unterstützung 42Safari Vollständige Unterstützung 10.1WebView Android Vollständige Unterstützung 55Chrome Android Vollständige Unterstützung 55Edge Mobile Vollständige Unterstützung JaFirefox 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
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

Schlagwörter: 
Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,