我有一個巨大的功能,嵌套的回調很多。我想讓它更清潔,更容易處理。所以,我正在考慮使用自定義事件偵聽器如何在node.js(express.js)中創建自定義事件偵聽器?
就像一個函數完成時,在回調中,而不是放置一大塊代碼,它只是發出一個事件,然後偵聽器就會運行。
那麼,如何在node.js中做到這一點?我仍然在尋找一個很好的例子來指導我。
我有一個巨大的功能,嵌套的回調很多。我想讓它更清潔,更容易處理。所以,我正在考慮使用自定義事件偵聽器如何在node.js(express.js)中創建自定義事件偵聽器?
就像一個函數完成時,在回調中,而不是放置一大塊代碼,它只是發出一個事件,然後偵聽器就會運行。
那麼,如何在node.js中做到這一點?我仍然在尋找一個很好的例子來指導我。
您可能想要創建一個EventEmitter對象,並調用emit()
就可以了。
您可以設置這樣的活動
app.on('event:user_created', callback);
然後你就可以發出他們
app.emit('event:user_created', data);
express.js使用EventEmitter
。
實際上,'app'在** express **框架中擴展了'EventEmitter'。 [[email protected]](https://github.com/senchalabs/connect/blob/master/lib/connect.js#L68)'utils.merge(app,EventEmitter.prototype);' – antitoxic 2012-10-07 17:05:56
因此, app'可以作爲應用程序範圍的調度 – 2013-06-26 19:58:23
這將採取一個錯誤的對象 - app.emit('event:foo',err,data) - 例如,如果我們返回數據庫查詢的結果? – starsinmypockets 2014-01-07 02:19:43
我剛剛遇到這個問題,我想在我的2美分中籌碼,專門迴應路易斯。
在快遞,如果你想在「應用」的實例來監聽,你會做一些像自定義事件:
app.on('testEvent', function() {
return console.log('responded to testEvent');
});
app.get('/test', function (req, res) {
app.emit('testEvent');
return res.status(200).end();
});
然後當路由被打,你會看到在控制檯響應。當然你可以按照你的意願實現它。
相關http://stackoverflow.com/questions/4903154/how-do-i-avoid-deeply-nested-code-in-node-js? – 2011-04-21 02:12:53
謝謝。我會嘗試。哪一個更好? – murvinlai 2011-04-21 18:10:45
第一個與你的問題最相關。 – 2011-04-22 11:15:08