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

183
Visualizações
la promesa se resolvió en lugar de rechazarse, incluso la promesa interna regresó

para la siguiente cadena de promesa

 new Promise(r=>r('b').then(()=>Promise.reject('x'))).catch(err=>console.log({error}))

se devuelve la promesa interna, por lo que debería aparecer y ser capturada por el bloque catch externo y registrar el error en la consola.

pero en cambio, se resolvió.

 Promise {<fulfilled>: 'b'}

¿Cómo atrapar la promesa interna mediante un bloque de captura externo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

r (más típicamente llamado resolve ) no devuelve una promesa, por lo que llamar a .then es un error. Normalmente, si se arroja un error en una función ejecutora de promesas (la función que pasa new Promise ), la promesa que se está creando se rechaza con ese error. Pero como ya llamaste a resolve , cumpliste la promesa con "b" y, una vez cumplida, no se puede cambiar para que sea rechazada, por lo que el error que ocurre durante el ejecutor simplemente se suprime. (Este es un caso específico de la regla más general de que una vez que se resuelve una promesa [vinculada a un resultado] no se puede resolver de manera diferente. Una promesa se puede resolver sin [todavía] cumplirse, pero cumplirla es una forma de resolviéndolo Si no está 100% en esta terminología de promesa, consulte mi publicación de blog aquí que lo explica).

Si desea resolver la promesa que está creando con otra promesa, pásela a la función de resolve :

 new Promise(resolve => { resolve(Promise.reject(new Error("x"))); }) .then(value => console.log("value", value)) .catch(error => console.error("error", error.message));

Ese ejemplo específico sería un ejemplo del antipatrón de construcción de promesa explícita (solo deberíamos usar la promesa de Promise.reject directamente), pero si tuviera una lógica de bifurcación en el ejecutor de promesas y algunas de las ramas no involucraran promesas, podría haga algo similar a esto (aunque estilísticamente tendría más sentido para mí arrojar un error o llamar a la función de reject pasada al ejecutor).

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