DEV Community

Cristian Fernando
Cristian Fernando

Posted on

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

Explica este código JavaScript

Dificultad: Intermedio

const one = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("one")
    }, 2000)
  })
}

const err = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject("err")
    }, 1000)
  })
}

const two = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("two")
    }, 5000)
  })
}

const res = () => {
  return Promise.all([one(), err(), two() ])
}

res()
  .then(x => console.log(x))
  .catch(err => console.log(err))
Enter fullscreen mode Exit fullscreen mode
  • A. "err" (después de 5s)
  • B. "err" (después de 1s)
  • C. ["one"] (después de 2s)
  • D. ["one", "two"] (después de 5s)

Respuesta en el primer comentario.


Oldest comments (1)

Collapse
 
duxtech profile image
Cristian Fernando

Respuesta:

  • B. "err" (después de 1s)

Promise.all() se usa para ejecutar promesas en paralelo, pero con algunas peculiaridades:

  • Recibe como parámetro un arreglo de promesas.
  • Se ejecuta sin problemas (regresa otro arreglo) siempre y cuando todas las promesas que recibe esten resueltas.
  • Si una sola promesa falla, entonces deja de evaluar el resto de las promesas y salta el error.

Dicho esto la función err regresa un error después de 1s, por ello veremos este mensaje de error después de dicho tiempo.