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))Al encadenar .then y .catch es útil pensar en ellos como una serie de pasos. Cada .then recibe el valor devuelto por el .then anterior (como su argumento). Sin embargo, si tu “paso” encontró un error, cualquier “paso” .then posterior se omitirá hasta que se encuentre un .catch. Si deseas sobrescribir un error, solo necesitas devolver un valor que no sea un error. Ese valor puede ser accedido en cualquier .then posterior.
¿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))Hint: .catch’s pueden usarse para ignorar (o sobrescribir) errores simplemente devolviendo un valor regular.
Este truco funciona solo cuando hay un .then posterior que reciba el valor.
¿Cuál será la salida del siguiente código?
Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) })Hint: .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) })Hint: .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))