0
我在一個項目中有3個模塊:A,B,C;他們都使用Rethinkdb,這需要在初始化時進行異步r.connect調用。來自多個模塊的Node.js數據庫初始化
我想從命令行模塊A到B的呼叫;但是,儘管在require()上啓動r.connect,但B無法提供此服務,因爲在模塊A調用之前rethinkdb尚未加載。
這個代碼可以用什麼方法重構,這樣我可以在調用B之前確保所有的初始化都完成了嗎?
我試過用閉包來繞過模塊傳遞狀態;然而,由於僅r.connect是可作爲異步功能,這將採取以下形式:
r.connect(config.rethinkdb, function(err, connection) {
rconn = connection;
// all module requires
require("./moduleB")(rconn);
require("./moduleC")(rconn);
...lotsacode...
});
這感覺非常錯誤的。有更好的建議嗎?
爲什麼不僅僅傳遞模塊需要用來建立連接的東西呢? –
因爲那麼再次,我不能保證在整個模塊初始化之前將導出的函數調用*。例如執行管道:1,require(「B」); 2,r.init()...在模塊A中; 3,模塊B中的r.init; 4,模塊A中的b.myFunctionCall; 5,並在模塊B中崩潰,因爲r.init仍在等待處理。 –