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
.