Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una función async puede contener una expresión await, la cual pausa la ejecución
de la función asíncrona y espera la resolución de la Promise pasada y, a
continuación, reanuda la ejecución de la función async y devuelve el valor resuelto.
Ejemplo
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function add1(x) {
const a = await resolveAfter2Seconds(20);
const b = await resolveAfter2Seconds(30);return x + a + b;
}
add1(10).then(v => {
console.log(v); // prints 60 after 4 seconds.
});
async function add2(x) {
const p_a = resolveAfter2Seconds(20);
const p_b = resolveAfter2Seconds(30);
return x + await p_a + await p_b;
}
add2(10).then(v => {
console.log(v); // prints 60 after 2 seconds.
});
JS CALLBACKS
Una función de callback es una función que se pasa a otra función como un
argumento, que luego se invoca dentro de la función externa para completar algún
tipo de rutina o acción.
Ejemplo:
function saludar(nombre) {
alert('Hola ' + nombre);
}
function procesarEntradaUsuario(callback) {
var nombre = prompt('Por favor ingresa tu nombre.');
callback(nombre);
}
procesarEntradaUsuario(saludar);
Sin embargo, tenga en cuenta que las callbacks a menudo se utilizan para
continuar con la ejecución del código después de que se haya
completado una operación a sincrónica — estas se denominan devoluciones de
llamada asincrónicas.
Ahí es donde entra en juego la asincronía que permite realizar largas solicitudes
de red sin bloquear el hilo principal.
JS PROMISE
Una promesa pendiente puede ser cumplida con un valor, o rechazada con una
razón (error). Cuando cualquiera de estas dos opciones sucede, los métodos
asociados, encolados por el método then de la promesa, son llamados. (Si la
promesa ya ha sido cumplida o rechazada en el momento que es anexado su
correspondiente manejador, el manejador será llamado, de tal manera que no
exista una condición de carrera entre la operación asíncrona siendo completada y
los manejadores siendo anexados)
JS ASYNC/AWAIT
La palabra clave async se añade a las funciones para decirles que devuelvan una
promesa en lugar de devolver directamente el valor. Adicionamente, esto permite
que las funciones síncronas eviten cualquier potencial sobrecarga que viene con
correr con el soporte por usar async. Cuando una función es declarada async con
sólo añadir la manipulación necesaria, el motor de JavaScript puede optimizar su
programa por usted.
La ventaja real de las funciones asincronas aparecen cuando las combinas con la
palabra clave await — en efecto, await solo trabaja dentro de las
funciones async. Esta puede ser puesta frente a cualquier funcion async basada
en una promesa para pausar tu codigo en esa linea hasta que se cumpla la
promesa, entonces retorna el valor resultante. Mientras tanto, otro código que
puede estar esperando una oportunidad para ejecutarse, puede hacerlo.
Puedes usar await cuando llames cualquier función que retorna una Promesa,
incluyendo funciones web API.
async function showAvatar() {