Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
¿Diferencia de excepción y promesa incumplida?

Estoy leyendo sobre el manejo de errores, y el libro dice

Si se produce un lanzamiento dentro de una función de controlador Promises, entonces es un rechazo. Una forma de pensar en las excepciones y los rechazos es que las excepciones son errores sincrónicos y los rechazos son errores asincrónicos.

Preguntas

  • El libro escribe rechazo , pero ¿no debería ser esto incumplido ?
  • ¿Tenía la impresión de que un throw es siempre una excepción?
  • ¿Y por qué las excepciones son solo para el código síncrono?
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Una Promesa incumplida es simplemente aquella que no ha sido cumplida, lo cual es bastante posible aunque no rechace. Por ejemplo:

 const prom = new Promise((resolve) => { // code here that never calls `resolve` });

Esa es una Promesa que nunca se cumplirá, pero tampoco se rechazará.

Una Promesa "incumplida" puede no quedarse para siempre como la anterior; es simplemente una Promesa que aún no se ha resuelto.

un lanzamiento es siempre una excepción?

Hasta cierto punto, sí, aunque se comporta de manera algo diferente cuando está dentro de una Promesa: no provocará un evento de error . En su lugar, intentará encontrar un controlador .catch en la cadena Promise en la que se encuentra actualmente y, si no lo encuentra, se activará un evento de unhandledrejection .

¿Y por qué las excepciones son solo para el código síncrono?

Así es como se diseñó el lenguaje.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que debe comprender la razón por la cual se necesitan los rechazos, el problema que intenta resolver. Considere un ejemplo simple como este:

 try { iDoNotExist } catch(e) { //e ReferenceError }

Bastante simple, el código está siendo evaluado y "probado" en busca de errores. Hay tal error y bueno, queda atrapado.

Ahora, ¿qué pasa si lo cambiamos un poco a esto:

 try { setTimeout(function(){ iDoNotExist }, 1000); } catch(e) { //e ReferenceError }

Si ejecuta este código, notará que su entorno javascript emitirá un error. No está siendo atrapado aquí. ¿Por qué? Debido a que el código que arroja el error no se ejecuta cuando se "intenta", solo la función setTimeout que simplemente programa la función y, bueno, esa función está haciendo su trabajo, lo está programando correctamente. Esta, a su vez, es la misma razón por la que tantas personas se equivocan cuando intentan acceder a un valor que es producto de una función asíncrona. P.ej

 let result; setTimeout(() => result = true, 1000); console.log(result) // Why is this undefined? - Famous last question

Ingrese promesas al rescate, que no solo le permiten recuperar un valor que normalmente return , sino que también le permite recuperar cualquier error potencial que ocurra en dichas operaciones asíncronas. Brindándole una semántica que es similar con el código síncrono (aún más cuando se combina con funciones async ).

Entonces, diría que los rechazos son complementarios a las excepciones. Para preservar el flujo de su programa cuando hay un límite asíncrono (al igual que las promesas cumplidas para preservar la composición de funciones).

En cuanto a lo que llamarías incumplido , bueno... hay un par de cosas. incumplido significa "no cumplido". Una promesa rechazada ES, técnicamente, una promesa incumplida . Sin embargo, una promesa no resuelta (una promesa en estado pendiente) TAMBIÉN es una promesa no cumplida . Técnicamente.

La mayoría de la gente pensará en lo último, pero en realidad podría ser cualquiera. Principalmente porque proviene de una época en la que "cumplir" y "resolver" se usaban indistintamente (lo cual es incorrecto). Pero también porque ese suele ser el resultado esperado de una resolución de promesa.

Bajo ninguna circunstancia una promesa no resuelta es una promesa rechazada. Una promesa no resuelta se encuentra en un estado transitorio en el que podría transitar hacia una promesa cumplida o rechazada.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda