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

201
Visualizações
Javascript / Node.js] Manejar error para promesa con espera

Escrito a continuación hay un ejemplo de mi código que suelo hacer. lo que hice es..

  1. Agregue try-catch para una función de promesa con async-await.
  2. No agregue try-catch para una función de promesa sin async-await.

Lo que quiero saber es que mi código está bien y es antipatrón o no.

Gracias de antemano.

 const readStatusAll = data => { return new Promise( async (resolve, reject) => { try { const category = await CoreStatus.findAll() resolve(category) } catch(err) { reject(err) } }) } // Promise without Await const readStatusAll = data => { return new Promise( async (resolve, reject) => { CoreStatus.findAll() resolve(category) } }) }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Lo que quiero saber es que mi código está bien y es antipatrón o no.

El primero funcionará correctamente, pero es un antipatrón.

El segundo no funcionará correctamente.

Ninguno de los bloques de código que muestra es la forma recomendada de hacer las cosas porque ambos envuelven innecesariamente una promesa existente en otra promesa creada manualmente. Esto se conoce como antipatrón. Esta primera versión funcionará correctamente, pero contiene un montón de código inútil (lo que lo convierte en un antipatrón) y con un poco más de complejidad en la función, es muy fácil cometer errores de codificación (por lo que, además de el código inútil que contiene, es un anti-patrón).

 const readStatusAll = data => { return new Promise( async (resolve, reject) => { try { const category = await CoreStatus.findAll() resolve(category) } catch(err) { reject(err) } }) }

En cambio, puede ser esto:

 const readStatusAll = data => { return CoreStatus.findAll(); }

La persona que llama recibirá la promesa como valor de retorno y luego puede usar .then() y .catch() o await y try/catch . Dado que no está haciendo nada con el error, aparte de propagarlo, no necesita detectar el error localmente; simplemente puede dejar que se propague de nuevo a la persona que llama.


Su segunda versión simplemente no es correcta en absoluto:

 // Promise without Await const readStatusAll = data => { return new Promise( async (resolve, reject) => { CoreStatus.findAll() resolve(category) } }) }

Debido a que no está prestando atención a ningún retorno asincrónico de CoreStatus.findAll() , resolverá esta promesa de envoltorio manual mucho antes de que se realice la llamada a la base de datos. De hecho, esto ni siquiera es un código legal ya que tiene un refuerzo inadecuado.

Tal vez quiso llamar a resolve(category) en alguna devolución de llamada o controlador .then() asociado con CoreStatus.findAll() . Pero, incluso si hiciera eso, aún no estaría propagando errores a la persona que llama. Esta no es la manera de hacer las cosas.

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