Explica este código JavaScript
Dificultad: Avanzado
const p1 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("p1")
},3000)
})
}
const p2 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("p2")
}, 5000)
})
}
Promise.all([p1(), p2()])
.then((mensaje) => console.log(mensaje))
.catch(err => console.log(err))
A. ["p1", "p2"]
(después de 8s)
B. ["p1", "p2"]
(después de 5s)
C. SyntaxisError
D. "p1"
, "p2"
(después de 5s)
Respuesta en el primer comentario.
Top comments (3)
Respuesta:
B.
["p1", "p2"]
(después de 5s)Promise.all
es una manera optima y recomendable de administrar conjuntos de promesas.Promise.all
recibe un arreglo de promesas como parámetro y las va evaluando una a una en el orden en que se las pasamos. Coloquialmente podríamos decir quePromise.all
es un "todo o nada", ya que solo regresará todas las promesas satisfechas.Otra característica es que las promesas se evalúan de manera paralela, por ello no esperamos a que
p1
se resuelva para poder comenzar a evaluarp2
, sino que ambas promesas se empiezan a evaluar al mismo tiempo, por ello los delays delsetTimeout
no se suman, basta con considerar el delay mas alto, en este caso el de 5s.Actualice hace poco mis bases en JS y la verdad es que los ejercicios estos me ayudan bastante a asentar conceptos +1.
Muchas gracias por ese comentario, escribir los post y explicarlos con un lenguaje no tan técnico me ayuda también a interiorizar ciertos conceptos, me alegra saber que te ayuda. Saludos.