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

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

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

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 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