--- title: await slug: Web/JavaScript/Reference/Operators/await tags: - Experimental - JavaScript - Operador translation_of: Web/JavaScript/Reference/Operators/await ---
O operador await
é utilizado para esperar por uma {{jsxref("Promise")}}. Ele pode ser usado apenas dentro de uma {{jsxref("Statements/async_function", "async function")}}.
[rv] = await expressão;
expressão
rv
Retorna um valor final da promise, ou o próprio valor se ele não for uma Promise
.
A expressão await
faz a execução de uma função async
pausar, para esperar pelo retorno da Promise
, e resume a execução da função async
quando o valor da Promise é resolvido. Ele então retorna o valor final da Promise. Se esse valor não for uma Promise
, ele é convertido para uma Promise
resolvida.
Se a Promise
for rejeitada, a expressão await
invoca uma Exception com o valor rejeitado.
Se uma Promise
é passada para uma expressão await
, ele espera pela sefinalização da Promise
e retorna seu valor final.
function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { var x = await resolveAfter2Seconds(10); console.log(x); // 10 } f1();
Se o valor não for uma Promise
, ele converte o valor para uma Promise
resolvida, e espera por ele.
async function f2() { var y = await 20; console.log(y); // 20 } f2();
Se a Promise
for rejeitada, o valor rejeitado é invocado em uma Exception.
async function f3() { try { var z = await Promise.reject(30); } catch(e) { console.log(e); // 30 } } f3();
Especificação | Status | Comentário |
---|---|---|
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}} | {{Spec2('ESDraft')}} | Definição inicial no ES2017. |
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | {{CompatChrome(55)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("52.0")}} | {{CompatUnknown}} | {{CompatOpera(42)}} | 10.1 |
Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | {{CompatChrome(55)}} | {{CompatChrome(55)}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("52.0")}} | {{CompatUnknown}} | {{CompatOperaMobile(42)}} | 10.1 |