Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

164
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda