Quiz: 9 preguntas sobre Promesas de JavaScript
¡Nunca vuelvas a romper una promesa!

¿Conoces las Promesas de JavaScript?
- ¡Demuestra tu dominio de JavaScript! 🚀
- Busca Pistas (Botón grande, esquina inferior).
- Prueba el código en la Consola de tu navegador (usa el atajo
F12o búscalo) o utiliza repl.it*. - Siéntete libre de twittearme @justsml. ¡Me encantaría conocer tu opinión!
👇 Completa las 9 preguntas abajo 👇
¿Cuál será la salida del siguiente código?
var p = new Promise((resolve, reject) => { reject(Error('The Fails!'))})p.catch(error => console.log(error.message))p.catch(error => console.log(error.message))Creemos una Promise usando el método constructor, provocando un error inmediatamente con el callback reject.
Luego los manejadores .catch funcionan como .addEventListener(event, callback) del DOM o .on(event, callback) de Event Emitter, donde se pueden añadir múltiples callbacks de manejador. Cada uno será llamado con los mismos argumentos.
¿Cuál será la salida del siguiente código?
var p = new Promise((resolve, reject) => { return Promise.reject(Error('The Fails!'))})p.catch(error => console.log(error.message))p.catch(error => console.log(error.message))Cuando se usa el constructor Promise debes invocar ya sea los callbacks resolve() o reject(). El constructor Promise ignora el valor de retorno del ejecutor, por lo que la Promise adicional creada con Promise.reject() no se encadena a p. Los dos manejadores se adjuntan a p, que queda pendiente, mientras que la Promise rechazada devuelta se informa como no manejada por el entorno host.
¿Cuál será la salida del siguiente código?
var p = new Promise((resolve, reject) => { reject(Error('The Fails!'))}).catch(error => console.log(error)).then(error => console.log(error))Cada .then recibe el valor con el que se cumple la promesa anterior. Un rechazo omite los manejadores de éxito hasta encontrar un manejador de rechazo. Aquí, .catch imprime el error y devuelve undefined (el resultado de console.log); el siguiente .then imprime undefined. Devolver un valor normal, incluso un objeto Error, cumple la promesa; lanzar una excepción o devolver una promesa rechazada mantiene el rechazo.
¿Cuál será la salida del siguiente código?
var p = new Promise((resolve, reject) => { reject(Error('The Fails!'))}).catch(error => console.log(error.message)).catch(error => console.log(error.message))Al encadenar .catch’s, cada uno solo maneja los errores lanzados en los pasos anteriores de .then o .catch. En este ejemplo el primer .catch devuelve el console.log, que solo se puede acceder añadiendo un .then() después de ambos .catch.
¿Cuál será la salida del siguiente código?
new Promise((resolve, reject) => { resolve('Success!') }) .then(() => { throw Error('Oh noes!') }) .catch(error => { return "actually, that worked" }) .catch(error => console.log(error.message))El primer .catch maneja el rechazo y devuelve la cadena "actually, that worked", por lo que la promesa resultante se cumple. El segundo .catch se omite y no se imprime nada. No hace falta un .then posterior para que el rechazo quede manejado.
¿Cuál será la salida del siguiente código?
Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) })Pista: .then’s pasan datos secuencialmente, desde return value al siguiente .then(value => /* handle value */).
Un return es clave para pasar un valor al siguiente .then.
¿Cuál será la salida del siguiente código?
Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) return data }) .then(console.log)Hay 2 llamadas a console.log que se ejecutarán.
¿Cuál será la salida del siguiente código?
Promise.resolve('Success!') .then(data => { data.toUpperCase() }) .then(data => { console.log(data) })Pista: .then’s pasan datos secuencialmente, desde return value al siguiente .then(value => /* handle value */).
Un return es clave para pasar un valor al siguiente .then.
¿Cuál será la salida del siguiente código?
Promise.resolve('Success!') .then(() => { throw Error('Oh noes!') }) .catch(error => { return 'actually, that worked' }) .then(data => { throw Error('The fails!') }) .catch(error => console.log(error.message))El primer .catch maneja el rechazo devolviendo una cadena sin imprimir nada. El siguiente .then lanza Error('The fails!'), y el último .catch imprime solo su mensaje: The fails!.
