我正在構建一個應用程序,其中有兩個不同的模塊。其中一個是與mongodb的連接,另一個模塊是連接到redis以進行會話管理。在這種情況下,每個模塊都有2個事件錯誤和連接。 下面是從模塊中的一個示例:等待來自不同模塊的多個事件,然後啓動服務器
var sessionStore = new SessionStore(app.get("sessionStore"));
sessionStore.client.on("error", function(err) {
console.error("[SessionStore]:", "connection error:", err.address + ":" + err.port, "for process:", process.pid);
var sessionStoreError = new Error("Session store error");
sessionStoreError.message = "Session store connection error";
sessionStoreError.code = err.code;
sessionStoreError.address = err.address;
sessionStoreError.port = err.port;
app.emit("error", sessionStoreError);
});
sessionStore.client.on("connect", function() {
console.log("[SessionStore]:", "connection established:", app.get("sessionStore").host + ":" + app.get("sessionStore"), "for process:", process.pid);
app.emit("ready");
});
幾乎相同的方式發生與mongodb的模塊。
我想什麼來實現(避免厄運的金字塔)是這樣的,但是當他們的模塊都Redis的和MongoDB連接成功:
app.on("ready", function(){
app.listen(app.get("port"));
});
記住,我可以窩每個模塊在另一個內部,可能需要連續處理程序中的模塊序列化,然後發出最終事件給應用程序,但根據我的口味,這不是優雅的。
是否有任何優雅的方式來等待2個事件,然後啓動服務器?
你應該檢查的承諾,並等待使用承諾所有的承諾。所有(promisesArray) – mkinawy