--- title: await slug: Web/JavaScript/Reference/Operators/await tags: - Experimental - JavaScript - Operator translation_of: Web/JavaScript/Reference/Operators/await ---
Der await
Operator wird genutzt, um auf einen {{jsxref("Promise")}} zu warten. Er kann nur in einer {{jsxref("Statements/async_function", "async Funktion")}} benutzt werden.
[rv] = await expression;
expression
rv
Gibt den ermittelten Wert des Promise
zurück, oder den Wert selbst, wenn es sich nicht um ein Promise
handelt.
Der await
Ausdruck lässt async
Funktionen pausieren, bis ein Promise
erfüllt oder abgewiesen ist, und führt die async
danach weiter aus. Wenn die Funktion weiter ausgeführt wird, ist der Wert des await
Ausdrucks der Wert des erfüllten Promise
.
Wenn das Promise
abgewiesen wird, wirft der await
Ausdruck eine Exception mit dem zurückgewiesenen Wert.
Ist der Wert des Ausdrucks, der auf den await
Operator folgt, kein Promise
ist, wird dieser zu einem erfüllten Promise konvertiert.
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 erfüllten Promise
konvertiert und dessen Wert zurückgegeben.
async function f2() { var y = await 20; console.log(y); // 20 } f2();
Wird ein Promise
abgewiesen, so wird eine Exception mit dem zurückgewiesene Wert geworfen.
async function f3() { try { var z = await Promise.reject(30); } catch(e) { console.log(e); // 30 } } f3();
Abfangen von abgewiesenen Promise
s ohne try-Block.
var response = await promisedFunction().catch((err) => { console.log(err); }); // response will be undefined if the promise is rejected
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}} | {{Spec2('ESDraft')}} | Initiale Definition in ES2017. |
{{Compat("javascript.operators.await")}}