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

183
Views
¿Cuál es la diferencia entre hacer `<..>.get().then().then().catch().finally()` y `<...>.get().then().catch( ).entonces().finalmente`

Estoy aprendiendo un poco sobre las promesas en Javascript y me pregunto si hay alguna diferencia al reordenar de la siguiente manera <...>.get().then().then().catch().finally() vs <...>.get().then().catch().then().finally() ?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

con la siguiente cadena

 <...>.get().then().then().catch().finally()

El método catch manejará el rechazo de todas las promesas anteriores en la cadena, mientras que con la siguiente cadena

 <...>.get().then().catch().then().finally()

El método catch no manejará el rechazo de la promesa devuelta por el método last then .

Este tipo de cadena es útil cuando desea manejar el rechazo de una promesa y convertirlo en el cumplimiento de la promesa devuelta por el método catch para permitir que la cadena de promesa continúe.

Si la promesa resultante de la segunda cadena se usa en alguna parte o si está devolviendo la promesa al final de esta cadena desde una función como se muestra a continuación,

 function foo() { return <...>.get().then().then().catch().finally(); }

entonces no usar otro método de catch está bien porque en ese caso, el código que llama a esta función puede manejar el rechazo de la promesa que no fue capturado y manejado por la propia cadena de promesa.

Sin embargo, si ese no es el caso, entonces definitivamente debería tener un segundo método de catch then de la última llamada al método.

about 4 years ago · Juan Pablo Isaza Report

0

Sí, son diferentes.

Digamos que tienes esto:

 <...>.get().then(() => A()).then(() => B()).catch(() => ErrorHandling()).finally(() => D()) <...>.then(() => A()).catch(() => ErrorHandling()).then(() => B()).finally(() => D())

Podría traducir esto a una representación de await / async :

 // <...>.get().then(() => A()).then(() => B()).catch(() => ErrorHandling()).finally(() => D()) try { await get(); await A(); await B(); } catch( ) { await ErrorHandling() } finally { await D(); } // <...>.then(() => A()).catch(() => ErrorHandling()).then(() => B()).finally(() => D()) try { try { await get(); await A(); } catch( ) { await ErrorHandling() } await B(); } finally { await D(); }

En el primer caso, B no se ejecutará si get o A dan como resultado un error. En el segundo caso, B se ejecutará incluso si get o A dan como resultado un error, el único caso en el que no se ejecutará es si ErrorHandling da como resultado un error.

Entonces, el primero se usa si B depende de get y A para ejecutarse con éxito. El segundo caso se usa, por ejemplo, si B debe get algo sin importar si A fue exitoso.

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!