簡體   English   中英

Javascript - 避免模塊循環依賴(組織問題?)

[英]Javascript - avoiding module circular dependency (organization issue?)

我完全不知道如何避免這種循環依賴。 我有一個發送電子郵件的 TS 模塊和一個處理錯誤的模塊。 錯誤處理程序寫入數據庫並發送電子郵件。 並且電子郵件發送者需要能夠處理錯誤。 然后大多數應用程序都使用它們。

例如,類似於:

電子郵件程序

import err from "error-handler.js"

function sendEmail() {
  try { trySendEmail() } 
  catch(e) { err(e) }
}

錯誤處理程序.js

import sendEmail from "emailer.js"

function err(e) {
  sendEmail("Error Occurred", e)
}

有沒有正確的方法來處理這種情況? 謝謝你的幫助!

a) 絕對沒有理由不在這里使用循環依賴——這兩個模塊確實相互依賴,並且您編寫的代碼與 ES6 模塊一樣工作,完全沒有問題。 這與將兩個函數聲明放在同一個文件中沒有什么不同。

b) 打破依賴鏈並改用依賴注入。 要么有

// 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)
}

或者

// 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)
}

如果您仍然需要在您的項目中同時使用兩者,而不在其中注入依賴項,則您將需要第三個模塊,該模塊依賴於兩者並導出注入了依賴項的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM