We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

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,