Explica este código JavaScript
Dificultad: Intermedio
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 edad valida`))
}, 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.any(arr)
.then((response) => {
console.log(response)
})
.catch(err => console.log(err))
}
getPromises()
- A.
15 no es edad valida
- B.
3
- C.
Pepe
- D.
Promise { <pending> }
- E.
["Pepe", "15 no es edad valida", 3]
Respuesta en el primer comentario.
Top comments (1)
Respuesta:
Pepe
Promise.any
hace dos cosas:Dicho esto, veamos el ejemplo de nuestro reto:
Tenemos 3 funciones que regresan promesas:
getName
,getAge
ycounterFriends
.getAge
es la única que todas que no se cumple, por ende la discriminamos para no tomarla en cuenta.Nos queda
getName
(tarda 3s) ycounterFriends
(tarda 5s), ambas se resuelven, entonces debemos ver cual es la que tarda menos; en este caso esgetName
, por ende en este caso la funcióngetPromises
moestraráPepe
por consola.