今天模拟写了一下中间件模式
突然想到洋葱模型,没啥思路。。。大神能不能看下我写的代码,帮忙指点指点
class App {
constructor() {
this.list = []
this.ctx = {}
this.next = ()=>{
this.continue =true;
}
}
use(func) {
this.list.push(func);
}
run() {
while(this.list.length>0) {
let func = this.list[0];
this.continue =false;
func(this.ctx,this.next);
this.list.shift();
if(!this.continue ) {
this.list = []
}
}
}
}
let app = new App()
app.use((ctx,next)=>{
ctx.name="111"
next()
console.log("最后执行");
})
app.use((ctx,next)=>{
ctx.age = 12;
next()
console.log("最后执行 -1");
})
app.use((ctx,next)=>{
console.log("ctx",ctx);
next()
console.log("最后执行 -2");
})
app.run()
核心代码: