Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

192
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!