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.


Discussion (3)

Collapse
duxtech profile image
Cristian Fernando Author

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 Author

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.