await
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
O operador await
é utilizado para esperar por uma Promise
. Ele pode ser usado apenas dentro de uma async function
.
Sintaxe
Descrição
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.
Exemplos
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ções
Specification |
---|
ECMAScript Language Specification # sec-async-function-definitions |
Compatibilidade com navegadores
BCD tables only load in the browser