async
async es una palabra clave relacionada con operaciones asincrónicas que solo está disponible en ES7, y está estrechamente relacionada con Promise y Generator.
Sintaxis
async function name([param[, param[, ... param]]]) { statements }
- name: nombre de la función.
- param: nombre del parámetro a pasar a la función.
- statements: declaraciones del cuerpo de la función.
Valor de retorno
La función async devuelve un objeto Promise, y se puede usar el método then para agregar funciones de devolución de llamada.
Una función async puede contener una expresión await. Cuando se ejecuta una función async, si encuentra await, pausa la ejecución; cuando se completa la operación asincrónica disparada, reanuda la ejecución de la función async y devuelve el valor resuelto.
La palabra clave await solo es válida dentro de async function. Si usas await fuera del cuerpo de una async function, solo obtendrás un error de sintaxis.
await
El operador await se usa para esperar un objeto Promise; solo se puede usar dentro de una función asíncrona async function.
Sintaxis
[return_value] = await expression;
- expression: un objeto Promise o cualquier valor que se desee esperar.
Valor de retorno
Devuelve el resultado de procesamiento del objeto Promise. Si lo que se espera no es un objeto Promise, devuelve el valor en sí.
Si se pasa un Promise a un operador await, await esperará a que el Promise se procese normalmente y devolverá su resultado de procesamiento.
Normalmente, después del comando await va un objeto Promise, pero también puede ir seguido de otros valores, como cadenas, valores booleanos, números y funciones ordinarias.
Formas en que await maneja diferentes expresiones que le siguen:
- Objeto Promise: await pausa la ejecución, espera a que el objeto Promise se resuelva (resolve), luego reanuda la ejecución de la función async y devuelve el valor resuelto.
- Objeto no Promise: devuelve directamente el valor correspondiente.