O operador await é utilizado para esperar por uma Promise. Ele pode ser usado apenas dentro de uma async function.

Sintaxe

[rv] = await expressão;
expressão
Uma Promise ou qualquer valor para esperar uma resolução.
rv

Retorna um valor final da promise, ou o próprio valor se ele não for uma Promise.

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

Especificação Status Comentário
ECMAScript Latest Draft (ECMA-262)
The definition of 'async functions' in that specification.
Rascunho Definição inicial no ES2017.

Compatibilidade de navegadores

Estamos convertendo nossos dados de compatibilidade para o formato JSON. Esta tabela de compatibilidade ainda usa o formato antigo, pois ainda não convertemos os dados que ela contém. Descubra como você pode ajudar!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 55 (Yes) 52.0 (52.0) ? 42 10.1
Feature Android Webview Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 55 55 (Yes) 52.0 (52.0) ? 42 10.1

Veja também

Etiquetas do documento e colaboradores

Colaboradores desta página: alefesouza
Última atualização por: alefesouza,