let linkArr=[]; //定义一个数组用来存放需要进行中转调用的函数
let req={url:"/"}; //初始化req对象,模拟http协议传送过来的数据
let res={end:()=>{}}; //初始化res对象,模拟服务器发送给客户端的数据
const app={
use:function(fn){
if(typeof fn !=="function") return; //判断调用的参数是否为数组,如果不是则直接退出
linkArr.push(fn); //把函数放入数组中,以便进行中传调用
this.run(req,res); //调用run()来初始化next()
},
run:function(req,res){
function next(){
let nextFn=linkArr.shift();//获取数组中的第一个函数,并把它从数组中移除(因为已经使用过了)
if(nextFn){
nextFn(req,res,next); //初始化数组中的第一次调用
}
}
next(); //初始化函数
}
}
app.use((req,res,next)=>{
console.log(11);
req.name="小红";
next();
});
app.use((req,res,next)=>{
console.log(req.name);
})