express和redux都有中间件的方式,redux也是借鉴了这个思想。
我们模拟实现一个express中间件机制
function express() {
const funcs = [];
var app = function(req,res) {
let i = 0;
function next() {
let currentTask = funcs[i];
i++;
if(!currentTask){
return
}
currentTask(req,res,next);
}
next();
}
app.use = function(task) {
funcs.push(task)
}
return app
}
1.维护一个task数组,为了每次添加task是向同一个添加,使用闭包
2.返回的应该是一个(req,res) => {}函数
3.可以顺序执行中间件(使用闭包,每次调用可以让局部变量i累加而不是从初始值开始)
4.在nexr函数中,给currentTask注入next,递归调用。