-
Notifications
You must be signed in to change notification settings - Fork 2
使用step flow简化按顺序执行的业务流程
张代应 edited this page Jun 8, 2017
·
6 revisions
在写项目的过程中,经常会遇到一些业务流程是按步骤的,比如要实现一个简单的hosts代理,当代理服务器接收到一个请求之后,需要经过一下步骤:
- 获取请求的hostname
- 读取hosts文件配置信息
- 解析最终的IP构造新的请求信息
- 发送请求
- 处理响应数据
- 发送到客户端
上面的流程中,上一步的处理结果,在下一步中需要用到,而且每一步都需要用到一些公共的数据,也就是需要一个上下文。
当然,这只是一个简单的例子,类似这样的流程还有很多。
当前比较流行的、能够方便管理这些流程的库有:step,async。这些库,各种自己的优缺点,这里不去一一点评。
如果我们对express的中间件比较熟悉,不难发现,其实中间件就是一个比较好的流程控制模式。每个流程的处理函数,都会接收到三个参数(req, res, next)
。req
和res
贯穿与整个中间件的生命周期,而next()
则控制了中间件的执行。而这正式一个比较理想的流程控制模式,所以参考这种模式,step-flow
诞生了。
...