知识点
- 中间件的实现
Reduce
用于函数
题目
中间件模式(middleware)是一种很常见、也很强大的模式,被广泛应用在 Express、Koa、Redux 等类库和框架当中。
简单来说,中间件就是在调用目标函数之前,你可以随意插入其他函数预先对数据进行处理、过滤,在这个过程里面你可以打印数据、或者停止往下执行中间件等。数据就像水流一样经过中间件的层层的处理、过滤,最终到达目标函数。请你模拟一个中间件模式,可以达到以下效果:
const app = {
callback (ctx) {
console.log(ctx)
},
use (fn) {
/* TODO */
},
go (ctx) {
/* TODO */
}
}
app.use((ctx, next) => {
ctx.name = 'Lucy'
next()
})
app.use((ctx, next) => {
ctx.age = 12
next()
})
app.use((ctx, next) => {
console.log(`${ctx.name} is ${ctx.age} years old.`) // => Lucy is 12 years old.
next()
})
// ... 任意调用 use 插入中间件
app.go({}) // => 启动执行,最后会调用 callback 打印 => { name: 'Lucy', age: 12 }
ctx