我几天来一直在研究NodeJS / Express应用程序中控制流的各种技术(主要是异步与承诺),我找不到任何人使用自定义事件(由Express扩展)来处理它...这引出了一个问题,为什么?
我对应用程序级别发出的事件有疑虑(当多个用户触发相同的事件树时,范围冲突?)以及围绕如此传递req和res对象的最佳实践的一些问题。我不太确定其中一个是否是这种控制流技术的“交易杀手”,但我喜欢社区的一些意见以及为什么这是一个好主意或坏主意的一些想法。
以下是我正在思考的一些伪代码:
class app.SessionController
# validate & wash user entry
@login = (req, res, userData) ->
# // do stuff //
app.emit 'session:userEntryValid', req, res, userData
# see if user-entered passwrod and stored password match
@validatePassword = (req, res, usr) ->
# // do stuff //
app.emit 'session:passwordAccepted', req, res, usr
# set session variables and send to index
@loginSuccess = (req, res, usr) ->
# // do stuff //
res.redirect '/'
###
SET UP EVENT LISTENERS
###
# Get user from database
app.on 'session:userEntryValid', (req, res, userData) ->
app.Model.getUser(req, res, userData)
# Validate the password
app.on 'Model:User:emailFound', (req, res, usr) ->
app.SessionController.validatePassword(req, res, usr)
# Process successful login
app.on 'session:passwordAccepted', (req, res, usr) ->
app.SessionController.loginSuccess(req, res, usr)