MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

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.
Padrão em tempo real Definição inicial no ES2017.

Compatibilidade de navegadores

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,