The await
operator is used to wait for a Promise
. It can only be used inside an async function
.
[rv] = await expression;
expression
Promise
or any value to wait for.rv
Returns the fulfilled value of the promise, or the value itself if it's not a Promise
.
The await
expression causes async
function execution to pause until a Promise
is fulfilled or rejected, and to resume execution of the async
function after fulfillment. When resumed, the value of the await
expression is that of the fulfilled Promise
.
If the Promise
is rejected, the await
expression throws the rejected value.
If the value of the expression following the await
operator is not a Promise
, it's converted to a resolved Promise.
If a Promise
is passed to an await
expression, it waits for the Promise
to be fulfilled and returns the fulfilled value.
function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { var x = await resolveAfter2Seconds(10); console.log(x); // 10 } f1();
If the value is not a Promise
, it converts the value to a resolved Promise
, and waits for it.
async function f2() { var y = await 20; console.log(y); // 20 } f2();
If the Promise
is rejected, the rejected value is thrown.
async function f3() { try { var z = await Promise.reject(30); } catch(e) { console.log(e); // 30 } } f3();
Specification | Status | Comment |
---|---|---|
ECMAScript Latest Draft (ECMA-262) The definition of 'async functions' in that specification. | Draft | Initial definition in ES2017. |
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 55 | Yes | 52 | ? | 42 | 10.1 |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | Opera Android | iOS Safari | Samsung Internet |
---|---|---|---|---|---|---|---|
Basic support | 55 | 55 | Yes | 52 | 42 | 10.1 | ? |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await