El operador await es usado para esperar a una Promise. Sólo puede ser usado dentro de una función async function.

Sintaxis

[rv] = await expression;
expression
Una Promise o cualquier otro valor por el cual haya que esperar.
rv

Regresa el valor terminado de la promesa o solamente un valor si no es unaPromise.

Descripción

La expresión await provoca que la ejecución de una función async sea pausada hasta que una Promise sea terminada o rechazada, y regresa a la ejecución de la función async después del término. Al regreso de la ejecución, el valor de la expresión await es la regresada por una promesa terminada.

Si la Promise es rechazada, el valor de la expresión await tendrá el valor de rechazo.

Si el valor de la expresión seguida del operador await  no es una promesa, será convertido a una resolved Promise.

Ejemplos

Si una Promise se pasa a una expresión await, espera a que la Promise se resuelva y devuelve el valor resuelto.

function resolveAfter2Seconds(x) { 
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

Si el valor no es una Promise, convierte el valor a una Promise resuelta, y espera por dicho valor.

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

Si la Promise es rechazada, se lanza una excepción con dicho el valor.

async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch(e) {
    console.log(e); // 30
  }
}
f3();

Especificaciones

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
La definición de 'async functions' en esta especificación.
Draft Initial definition in ES2017.

Compatibilidad con navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Soporte básicoChrome Soporte completo 55Edge Soporte completo SiFirefox Soporte completo 52IE ? Opera Soporte completo 42Safari Soporte completo 10.1WebView Android Soporte completo 55Chrome Android Soporte completo 55Edge Mobile Soporte completo SiFirefox Android Soporte completo 52Opera Android Soporte completo 42Safari iOS Soporte completo 10.1Samsung Internet Android Soporte completo 6.0nodejs Soporte completo 7.6.0
Soporte completo 7.6.0
Soporte completo 7.0.0
Deshabilitado
Deshabilitado From version 7.0.0: this feature is behind the --harmony runtime flag.

Leyenda

Soporte completo  
Soporte completo
Compatibility unknown  
Compatibility unknown
El usuario debe de habilitar explícitamente esta característica.
El usuario debe de habilitar explícitamente esta característica.

Véase también

Etiquetas y colaboradores del documento

Colaboradores en esta página: esjuanma, jpinto7, JavierHspn, rcchristiane
Última actualización por: esjuanma,