DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js💊| #121: Explica este código JavaScript

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))
Enter fullscreen mode Exit fullscreen mode

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)

Collapse
 
duxtech profile image
Cristian Fernando

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 que Promise.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 evaluar p2, sino que ambas promesas se empiezan a evaluar al mismo tiempo, por ello los delays del setTimeout no se suman, basta con considerar el delay mas alto, en este caso el de 5s.

Collapse
 
devfranpr profile image
DevFranPR

Actualice hace poco mis bases en JS y la verdad es que los ejercicios estos me ayudan bastante a asentar conceptos +1.

Collapse
 
duxtech profile image
Cristian Fernando

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.