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

208
Vistas
Javascript: evitar la dependencia circular del módulo (¿problema de organización?)

Estoy completamente perplejo sobre cómo evitar esta dependencia circular. Tengo un módulo TS que envía correos electrónicos y uno que maneja errores. El controlador de errores escribe en una base de datos y envía correos electrónicos. Y el remitente de correo electrónico debe poder manejar los errores. Entonces, la mayoría de las aplicaciones usan ambos.

Por ejemplo, algo como:

emailer.js

 import err from "error-handler.js" function sendEmail() { try { trySendEmail() } catch(e) { err(e) } }

manejador de errores.js

 import sendEmail from "emailer.js" function err(e) { sendEmail("Error Occurred", e) }

¿Hay una manera correcta de manejar esta situación? ¡Gracias por tu ayuda!

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

0

a) no hay absolutamente ninguna razón para no usar una dependencia circular aquí: los dos módulos dependen el uno del otro, y el código que ha escrito funciona tal cual con los módulos ES6, sin ningún problema. No es diferente de poner ambas declaraciones de funciones en el mismo archivo.

b) romper la cadena de dependencia y usar la inyección de dependencia en su lugar. o tener

 // emailer.js function sendEmail(text, handleError) { try { trySendEmail(text) } catch(e) { handleError(e) } }
 // error-handler.js import sendEmail from "emailer.js" function err(e) { sendEmail("Error Occurred: "+e.message, err) }

o

 // emailer.js import err from "error-handler.js" function sendEmail(text) { try { trySendEmail(text) } catch(e) { err(e, sendEmail) } }
 // error-handler.js function err(e, sendEmail) { sendEmail("Error Occurred: "+e.message) }

Si aún necesita usar ambos en su proyecto, sin inyectar una dependencia en ninguno, necesitará un tercer módulo que dependa de ambos y exporte una función con la dependencia inyectada.

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