Explica este código JavaScript
Dificultad: Intermedio
const one = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject("one")
}, 5000)
})
}
const two = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject("two")
}, 2000)
})
}
const three = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject("three")
}, 10000)
})
}
const res = () => {
return Promise.all([one(), three(), two()])
}
res()
.then(x => console.log(x))
.catch(err => console.log(err))
- A.
"["one", "three", "two"]"
(después de 10s) - B.
"one"
(después de 5s) - C.
"three"
(después de 10s) - D.
"two"
(después de 2s)
Respuesta en el primer comentario.
Top comments (1)
Respuesta:
"two"
(después de 2s)Cuando usamos
Promise.all()
basta que una promesa falle para que todo el proceso termine, en este caso curiosamente fallan todas las promesas, entonces evaluamos cual es la promesa que falla primero, osea la que tiene el delay mas breve, de las tres promesastwo
es la que falla primero, y por ende es el error que veremos por pantalla ignorando las otras promesas.