Explica este código JavaScript
Dificultad: Intermedio
const one = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("one")
},5000)
})
}
const two = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error("Error!"))
}, 2000)
})
}
const res = () => {
return Promise.allSettled([one(), two()])
}
res()
.then(x => console.log(x))
.catch(err => console.log(err))
- A.
[
{status: "fulfilled", value: "one"},
{status: "rejected", reason: "Error!"}
]
(después de 5s)
- B.
[
{status: "fulfilled", value: "one"},
{status: "fulfilled", value: "two"}
]
(después de 5s)
- C.
Promise { <rejected> }
- D.
Ninguna de las anteriores
Respuesta en el primer comentario.
Top comments (1)
Respuesta:
(después de 5s)
Promise.allSettled
siempre regresa un arreglo de obejtos con es estado de las promesas, tanto las que fueron resultas como las que lanzaron un error.Todas las promesas que fueron satisfactorias tendrán la siguiente estructura:
Donde
status: "fulfilled"
nos dice que la promesa fue resuelta yvalue
nos regresa su valor (en el ejemplo,one
).Todas las promesas que tuvieron errores, regresan un objeto con las siguiente estuctura:
Donde
status: "rejected"
nos indica que la promesa presento errores yreason
nos da la razón del por que la promesa falló, en este caso el mensaje de error de la sentenciareject
.Al evaluarse todas las promesas, el tiempo de duración del ejemplo dura lo que tarda en evaluarse la promesa con más delay, en este caso
5s
.