Explica este código JavaScript
Dificultad: Avanzado
const getName = (name) => { return new Promise ((resolve, reject) => { setTimeout(() => { resolve(name) }, 3000) }) } const getAge = (age) => { return new Promise((resolve, reject) => { setTimeout(() => { if (age < 18) reject(new Error(`${age} no es valido`)) }, 2000) }) } const counterFriends = (friends) => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(friends.length) }, 5000) }) } const getPromises = () => { const arr = [ getName("Pepe"), getAge(15), counterFriends(["Ana", "Roberto", "Juan"])]; return Promise.race(arr) .then((response) => { console.log(response) }) .catch(err => console.log(err)) } getPromises()
- A.
"Pepe"
- B.
["Pepe", 3]
- C.
Promise { <fullfiled> }
- D.
15 no es edad valida
- E.
3
Respuesta en el primer comentario.
Top comments (1)
Respuesta:
15 no es edad valida
Promise.race
hace solo una cosa:En nuestro ejemplo, lo único que debemos ver son los delays correspondientes:
getName
tarda 3sgetAge
tarda 2scounterFriends
tarda 5s¿Cual de todos es el menor?
Aja! Es
getAge
, pero regresa una promesa rechazada. No importa, es la primera en acabar de ejectarse, entonces regresamos su mensaje de error:15 no es edad valida
.