Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

172
Vistas
¿Puedo usar Promise.prototype.catch dentro de las funciones asíncronas que usan await?

¿Hay alguna implicación de usar Promise.prototype.catch dentro de las funciones asíncronas donde se usa await ?

Por ejemplo:

 async funciton sendMessage(topic, bodyObj) { // implementation is not important } async function removeFromInventory(item, amount) { const storeData = await getSoreData(item) const removeResult = await inventory.removeFromStore(storeData.id, item.id, amount) sendMessage( Message.REMOVE_INVENTORY_SUCCESS, removeResult ).catch(log.error) // <== here, is it has downside and it is better to use try/catch? return removeResult }

No quiero await a que se complete sendMessage y uso .catch para manejar los rechazos, en otras palabras, evitar los rechazos no manejados.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Hay alguna implicación de usar Promise.prototype.catch dentro de las funciones asíncronas donde se usa await?

La forma en que lo está usando, la implicación principal es que está "comiendo" el error. Registras el error y luego continúas como si no hubiera ningún error. Si esa es la intención del diseño, funcionará bien.


En cuanto al tema general, puede mezclar async/await .then() y .catch() . Funcionará, no hay ninguna prohibición de idioma en su contra.

Dicho esto, generalmente no se recomienda mezclarlos, ya que puede crear un código más confuso donde no está del todo claro si el manejo de errores y/o la propagación de errores se implementan de manera consistente y correcta porque está mezclando dos modelos diferentes de manejo de errores.

La única vez que tiendo a mezclar async/await await con .catch() es cuando quiero iniciar sesión y "comer" un error mientras dejo que todo lo demás continúe como si no hubiera ningún error.

Por ejemplo, eso sucede a menudo cuando se elimina un archivo temporal dentro de una función que de otro modo usa async/await :

 fs.promises.unlink(tempFile).catch(err => console.log(err));

Lo hago de esta manera solo porque es más compacto que lo rodea con try/catch y estoy "comiendo" el error porque no hay nada útil que hacer si esto falla y la operación principal ya se completó con éxito. También es posible que no ponga una await porque en realidad no necesito que la operación principal espere a que se complete esta limpieza antes de que comunique su finalización.

A modo de comparación, la otra forma de hacer esto sería:

 try { await fs.promises.unlink(tempFile); } catch(e) { console.log(e); }

Entonces, si esa es su intención con sendMessage(...).catch() , entonces está perfectamente bien. Esto registrará el error y, de lo contrario, "comerá" el error para que el procesamiento continúe como si no hubiera ningún error.

Si, por otro lado, desea que el error se propague a la persona que llama, entonces esto no es lo que desea porque eso no sucederá. Este código maneja el error y lo oculta para que no se propague a la persona que llama.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda