Contenido del curso
Configuracion
¿Qué se implementó en ES6?
- 4

let, const y arrow functions en ES6
15:29 min - 5

Template literals en JavaScript ES6
08:11 min - 6

Parámetros por defecto en funciones ES6
05:46 min - 7

Desestructuración de arrays y objetos en JavaScript
05:33 min - 8

Spread y rest parameters en JavaScript
07:30 min - 9

Playground: Combina objetos JSON con el Spread Operator
- 10

Object literals abreviados en ES6
05:42 min - 11

Promesas en JavaScript con resolve y reject
Viendo ahora - 12

Clases en JavaScript con getters y setters
18:54 min - 13

Módulos en JavaScript con import y export
09:48 min - 14

Playground: Obtén una lista de películas
- 15

Generators en JavaScript: control del estado
07:19 min - 16

Playground: Generador de identificadores para michis
- 17

Método add() y encadenamiento en Sets JS
04:36 min
¿Qué se implementó en ES7?
¿Qué se implementó en ES8?
¿Qué se implementó en ES9?
¿Qué se implementó en ES10?
¿Qué se implementó en ES11?
¿Qué se implementó en ES12?
¿Qué se implementó en ES13?
Recapitulación
Promesas en JavaScript con resolve y reject
Resumen
Las promesas en JavaScript son una de las incorporaciones más relevantes de ECMAScript 6 para manejar asincronismo de forma clara y predecible. Si vienes del mundo de los callbacks y quieres escribir código que no se bloquee mientras espera resultados, esta es la pieza que necesitas dominar.
¿Qué es una promesa en JavaScript y para qué sirve?
Una promesa representa algo que va a pasar: hoy, mañana o nunca. Esa analogía resume el comportamiento real de la sintaxis y te ayuda a entender por qué este patrón cambió la manera de escribir código asíncrono.
Antes de ES6, el asincronismo en JavaScript se resolvía principalmente con callbacks, funciones que reciben otra función como parámetro y la ejecutan cuando corresponde. El problema es que anidar callbacks vuelve el código difícil de leer y mantener. Las promesas llegaron a ordenar ese caos antes de que async y await aparecieran más adelante.
¿Qué es una promesa en JavaScript? Es un objeto que representa el resultado futuro de una operación asíncrona. Puede resolverse con éxito (resolve) o fallar (reject).
¿Cómo se crea una promesa con resolve y reject?
La sintaxis introducida en ECMAScript 6 usa el constructor new Promise y recibe dos parámetros: resolve para cuando todo sale bien y reject para cuando algo falla.
Para verlo en acción, creamos un archivo 06-promise.js y definimos una arrow function que retorna la promesa:
javascript const anotherFunction = () => { return new Promise((resolve, reject) => { if (true) { resolve('¡Hey!'); } else { reject('Ups, no funcionó'); } }); };
Aquí ocurren varias cosas importantes:
- La arrow function externa requiere
returnexplícito porque usamos llaves para abrir un bloque de lógica. - El constructor
new Promiserecibe una función anónima que también puede escribirse como arrow function. - Dentro del bloque defines la condición que decide si la promesa se cumple o se rechaza.
El valor que pases a resolve o reject puede ser un string, un número, un objeto o cualquier dato que necesites propagar al consumidor de la promesa.
¿Cómo consumir promesas con then y catch?
Una vez creada la promesa, la consumes encadenando los métodos then y catch. El primero captura el resultado exitoso y el segundo atrapa los errores.
javascript anotherFunction() .then(response => console.log(response)) .catch(error => console.log(error));
Cuando la condición evalúa a true, la consola imprime ¡Hey!. Si cambias la condición a false, el flujo entra al reject y catch muestra Ups, no funcionó.
¿Para qué sirve catch en una promesa? Captura cualquier error o rechazo de la promesa para que puedas manejarlo sin romper la ejecución del programa.
¿Puedo encadenar varios then en la misma promesa?
Sí, y es uno de los puntos fuertes de este patrón. Puedes tener múltiples then consecutivos donde cada uno transforma o reacciona al valor anterior, y un único catch al final que recoja cualquier error de la cadena.
Un detalle de sintaxis que conviene cuidar: no cierres con punto y coma antes de catch ni entre los then, porque rompes la concatenación. La cadena debe fluir sin interrupciones hasta el último método.
¿Por qué importan las promesas dentro de ECMAScript 6?
Las promesas resolvieron una limitación real del lenguaje: trabajar con asincronismo sin caer en el llamado callback hell. Con esta sintaxis tu aplicación puede hacer múltiples llamadas, esperar recursos y seguir respondiendo sin bloquearse.
Algunos puntos clave para fijar el concepto:
- Una promesa siempre termina en uno de dos estados: resuelta o rechazada.
resolveyrejectson funciones que tú decides cuándo invocar dentro de tu lógica.thenrecibe el valor deresolve;catchrecibe el valor dereject.- Puedes encadenar tantos
thencomo necesites antes delcatch.
Esta base es justamente la que más adelante hará que entender async y await sea mucho más sencillo, porque esa sintaxis no es más que azúcar sintáctico sobre las promesas que acabas de escribir.
¿Ya probaste cambiar el valor del if entre true y false para ver cómo cambia la salida en consola? Cuéntame en los comentarios qué otros casos de uso se te ocurren para aplicar promesas en tus proyectos.