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 validaPromise.racehace solo una cosa:En nuestro ejemplo, lo único que debemos ver son los delays correspondientes:
getNametarda 3sgetAgetarda 2scounterFriendstarda 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.