Contenido del curso
Contenido del curso
Patricio Manuel Ugarte
Alexander Nova Arevalo
Usuario anónimo
Jaime Navarro
David Antonio Garcia Saaib
Ramdhei López Arcila
Simón Arenas
DARWIN JUAN CARLOS CATUNTA GARCIA
Oscar Adolfo Méndez Muñoz
Alejandro Giraldo Londoño
Tatiana Karina Valencia Hernández
Jimmy Buriticá Londoño
Juan Esteban Deossa Pertuz
Daniel Hurtado
Gerardo Nava Pereda
Abigail Perez
Cristian Lotero Aquino
Markin Piero Pulache Guarniz
María Sierra
Emanuel Valero
Miguel Angel Duarte
DARWIN JUAN CARLOS CATUNTA GARCIA
Jessie Buckland Pérez
Juan Jose Vega
Jessie Buckland Pérez
David Vargas Domínguez
Luis Alberto Reyes Lema
Arian Driussi
Simón Arenas
Sebastian Medina
Sergio Estrella
Jorge Eliecer Rangel Jimenez
María Jimena Rodríguez Contreras
Ginnio Sarabia
Maria Elizabeth Minero Alvarenga
Platzi Team
Wilson Fernando Antury Torres
Jhon Eduard Bocanegra Ortiz
Carlos Eduardo Gomez García
Me parece importante marcar que para este caso de aplicación no es necesario declarar las funciones hola(), hablar() y adios() como async, ya que en ningún momento estamos haciendo un await dentro de las mismas, sólo devuelven las promesas.
Perfecto aporte
Async await se basa en promesas. Al no utilizar el await, la promesa te quedaría en estado pendiente y nunca se resolvería.
increible explicacion me quedo mas claro que en el curso de asincronismo :)
Ya van varias veces que tomo este tema y cada vez pienzo que me queda mas claro
Eso es lo bello de éstos cursos, si no dominas algo en un curso, vas al siguiente y si está la misma temática seguro lo entiendes. Platzi es increíble <3
Entendí la referencia.jpg :)
Ahhh, ya entendí.
RESUMEN:
Para evitar que todo se vea asíncrono, y que la sintáxis sea más legible las operaciones secuenciales como hacer un archivo que se procese, subirlo para tener una URL y de ahí mandarla a una base de datos. Async y Await nos permite definir una función de forma explícita como asíncrona y esperar a que la función termine. No estará bloqueando el hilo principal, pues estará esperando a que se resuelva con el event loop
// La palabra async la convierte inmediatamente en asíncrona. async function hola(nombre) { return new Promise(function (resolve, reject) { setTimeout(function () { console.log('Hola, '+ nombre); resolve(nombre); }, 1500); }); } async function hablar(nombre) { return new Promise( (resolve, reject) => { setTimeout(function() { console.log('Bla bla bla bla...'); resolve('Hay un error'); }, 1000); }); } async function adios(nombre) { return new Promise( (resolve, reject) => { setTimeout(function() { console.log('Adios', nombre); resolve(); }, 1000); }); } // Await solo es válido dentro de una función asíncrona. async function main() { let nombre = await hola('Alejandro'); await hablar(); hablar(); // Para hacer que se ejecute en segundo plano no debe existi el await await hablar(); await adios(nombre); console.log('Termina el proceso'); } // Esto nos permitirá saber si nuestra función se está ejecutanod de forma asíncrona. console.log('Empezamos el proceso'); main(); console.log('Va a ser la segunda instrucción')
Gracias por tu aporte
Muy bien explicado.
Asyn/Await es azucar sintactico, es decir, una forma muy legible y entendible de realizar código, un Async/Await no deja de ser una función asíncrona, la diferencia es que al usar esta sintaxis se podrá ver un código más legible. Para usar correctamente esta sintaxis usamos Async para declarar una función asíncrona, cuando una función es asíncrona podremos usar dentro de su contexto el Await. El Await es la manera en que le indicaremos a nuestro código que ha de “esperar” a que el evento al cual le indiquemos Await es importante para el proceso del código, por ende, para poder seguir ejecutando el proceso espere a que el evento se resuelva y retorne un valor. Cuando este retorne un valor el código seguirá normalmente. Let nombre = ‘YourName’; Async helloWorld(nombre){ Await resolveName(nombre) whoAreYou(nombre); <-- esta función no se ejecutara hasta que el await se resuelva. }
Creo que no era necesario definir como funciones asíncronas a hola, hablar y adios, simplemente con definir como asíncrona a la función que va a ejecutar las otras (main) es suficiente para usar el await.
Le falto quitar las new Promise() y sustituirlas por await
En informática, el azúcar sintáctico es un término acuñado por Peter J. Landin en 1964 para referirse a los añadidos a la sintaxis de un lenguaje de programación diseñados para hacer algunas construcciones más fáciles de leer o expresar. Esto hace el lenguaje "más dulce" para el uso por programadores: las cosas pueden ser expresadas de una manera más clara, más concisas, o de un modo alternativo que se prefiera, sin afectar a la funcionalidad del programa.
Fuente: Wikipedia
Muchas gracias por el dato! escuché varias veces esa expresión y no sabia de donde venia.
buen aporte
Async/await
La sintaxis de Async/await nos va a permitir definir una función de forma explícita como función asíncrona y poder esperar a que esa función termine.
async function hola(nombre) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(`Hola, ${nombre}`) resolve(nombre) reject('No sé qué paso') }, 1500) }) } async function hablar(nombre) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(`Bla bla bla bla...`) resolve(nombre) }, 1000) }) } async function adios(nombre) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(`Adiós, ${nombre}`) resolve() }, 1000) }) } async function main() { let nombre = await hola('Carlos') await hablar() await hablar() await hablar() await hablar() await adios(nombre) } console.log('Empezamos el proceso') main() console.log('Terminamos el proceso')
Aca dejo un video de Leonidas Esteban sobre async await que está muy bueno: https://www.youtube.com/watch?v=E5ENWEcoDdI :-)
jajajaja, no sabia que tenia canla el profe de css
Super, gracias por el enlace :)
Descubre el secreto del sabio Math:
const numfrases = 20; //arreglo de frases sabias const SmartArrayFrases = [ '1. No hay que ir para atrás ni para darse impulso (Lao Tsé) Una frase motivadora que aconseja seguir siempre nuestro camino a pesar de las adversidades.', '2. No hay caminos para la paz; la paz es el camino (Mahatma Gandhi) Gandhi nos dejó para la historia esta preciosa frase sobre la paz. ', '3. Haz el amor y no la guerra (John Lennon) El cantante John Lennon siempre tuvo una mentalidad pacificadora. ', '4. Para trabajar basta estar convencido de una cosa: que trabajar es menos aburrido que divertirse (Charles Baudelaire) El trabajo, a pesar de que siempre apetezca hacerlo, es bueno para nuestra salud mental.', '5. Lo peor que hacen los malos es obligarnos a dudar de los buenos (Jacinto Benavente) Siempre es mejor ser honrado aunque a veces podamos creer lo contrario.', '6. Las guerras seguirán mientras el color de la piel siga siendo más importante que el de los ojos (Bob Marley) El racismo y los prejuicios han sido la causa de muchas guerras.', '7. Aprende a vivir y sabrás morir bien (Confucio) La vida hay que disfrutarla en cada momento y no estar muerto en vida.', '8. Cada día sabemos más y entendemos menos (Albert Einstein) No importa que cada vez haya más conocimiento si no lo sabemos aplicar.', '9. El mundo no está en peligro por las malas personas sino por aquellas que permiten la maldad (Albert Einstein) Siempre habrá gente mala, pero no podemos dejar que triunfen.', '10. La medida del amor es amar sin medida (San Agustín) Una frase romántica que significa que debemos amar con todo.', '11. No hay nada que un hombre no sea capaz de hacer cuando una mujer le mira (Casanova) El amor de un hombre por una mujer es capaz de mover el mundo.', '12. Dar el ejemplo no es la principal manera de influir sobre los demás; es la única manera. (Albert Einstein) A la hora de educar, es necesario que nosotros mismos seamos coherentes con lo que pretendemos enseñar.', ] //funcion de saludo paramétrica, hola y adios son lo mismo, un saludo, solo cambia el tipo mensaje. async function Saludo(tipo,nombre) { return new Promise((resolve, reject)=>{ setTimeout(function() { console.log(tipo + " " + nombre); resolve(nombre); }, 100) }); } // hablar es la accion de emplear la funcion de las frases async function hablar() { return new Promise((resolve, reject)=>{ setTimeout(function() { frases() }, 100); }) } //una conversacion es un grupo de frases organizadas de alguna manera async function conversacion(veces) { return new Promise((resolve, reject)=>{ setTimeout(function() { if (veces >= 1) { hablar() switch(veces){ case numfrases: console.log("-- Dice el primer sabio:") break; case 1: console.log("-- Dice el último sabio:") break; default: console.log("-- Dice el siguiente sabio:") break; } conversacion(--veces) } else { Saludo("Adios", "Eruditos, los sabios HAN DICHO o quizás no..."); } //resolve(conversacion()); }, 100); }) } // los sabios escogen frases aleatorias function frases(){ //let i = Math.floor(Math.random() * SmartArrayFrases.length) Secreto de sabio let i = Math.round(Math.random() * SmartArrayFrases.length) if(SmartArrayFrases[i]){ return console.log(SmartArrayFrases[i]) ; }else{ return console.log("Algun sabio mantuvo el silencio, su secreto es que no sabia usar bien el math para escoger las frases, ¿podrás ayudarlo?") } } //maine capital augusta async function Main(){ await Saludo("Bienvenidos", "Viajeros estelares") await conversacion(numfrases); } Main();
Las frases se muestran en desorden.
¿Has visto cuál es el fallo en el código? :D
Comparto un post que explica un poco más de promesas y async await. Espero les guste y puedan dejar feedback!
Tomen lo que voy a decir como un comentario super positivo para el profesor(lo comento porque no quiero salir mal parado) Este es mi vigésimo curso, he tomado cursos desde html y css, hasta cursos de niveles ya avanzado en vue, y es que en todo los cursos de javascript explican este concepto, y este es el profesor que más errores y dificultades ha tenido a lo largo de su explicación Y NO ENTIENDO el POR QUÉ PERO ES AL QUE MEJOR LE HE ENTENDIDO LA ASINCONÍA, ES FANTÁSTICO, GRACIAS CARLOS Psdta. me imagino a Freddy en todos los cursos de js diciendo, vas a enseñar callback, promise y async await y te va a gustar jajajajajajaja
a mi me parece perfecto que cometa errores, sabes por que? por que al fin al cabo así es cualquier día de un programador, las cosas nunca salen a la primera y se comenten muchos errores en un desarrollo. Asi que muy bien por su parte no cortar esos errores.
Por si gustan usar tambien el try-catch
async function main() { try { let nombre = await hola("Simon"); await hablar(); await hablar(); await hablar(); await adios(nombre); } catch (error) { console.log("Error"); } }```
Sintaxis para el manejo de errores =) await foo().catch(error => console.log(error));
Hoy por fin entendí totalmente el async/await
async function hello(name) { return new Promise((resolve, reject) => { setTimeout(() => { console.log("hello", name); resolve(); }, 1500); }); } async function speaks(name) { return new Promise((resolve, reject) => { setTimeout(() => { console.log("bla bla bla..."); resolve(name); }, 1000); }); } async function bye(name) { return new Promise((resolve, reject) => { setTimeout(() => { console.log("bye", name); resolve(); }, 1000); }); } async function main() { let name = await hello("George"); await speaks(); await speaks(); await speaks(); await bye(name); console.log("End process"); } console.log("Init process"); main();
muchas gracias
He seguido toda la ruta de la escuela de JavaScript y ha servido como complemento perfecto de los otros cursos.
Me queda super claro todo.
Async y Await nos permite definir una función de forma explícita como asíncrona y esperar a que la función termine.
Excelente aporte compañera, gran resumen 💪
La palabra await solo funciona dentro de una función asíncrona.
Es necesario definir las primeras funciones con async? porque use sintaxis de arrow functions y me dio el mismo resultado
¡Hola! No, de hecho no es necesario definir el async ahí. El async solo es necesario si dentro de la función vas a usar await :D