|
koa中的洋葱模型实现
代码如下: function compose(middlewares){
return function (next) {
function dispatch(i){
let processingFunc = middlewares[i];
if(i === middlewares.length) {
processingFunc = next;
}
return processingFunc(dispatch.bind(null, i + 1))
}
return dispatch(0)
}
}
function middleware1(next){
console.log("do something before middleware 01")
next()
console.log("do something after middleware 01")
}
function middleware2 (next){
console.log("do something before middleware 02")
next()
console.log("do something after middleware 02")
}
const middlewares = [middleware1, middleware2];
const fn = compose(middlewares); // ?
fn(last)
function last(){
console.log("last")
}执行 中间件1的时候看到了 next,当中间件1中的next被调用时,其实是去调用 中间件2去了,等等后面的中间件执行完了后,回到上一次执行的 next, 继续执行后面的代码. 代码仓库地址: https://github.com/kenny6520/shared/tree/main/middleware |
|
|
沙发#
发布于:2021-02-22 11:02
更改错误地方
let processingFunc = middlewares 应该 let processingFunc = middlewares【i】 英文模式下的中括号,会看不到,请大家使用的时候自行修改一下啊 |
|
|
板凳#
发布于:2021-02-22 10:54
doubleyong:楼主,这么好的代码,如果有个好的标题的话,有利于更多人看到,哈哈回到原帖 好说 |
|
|
地板#
发布于:2021-02-22 10:49
zclzye:代码仓库地址:https://github.com/kenny6520/shared/tree/main/middleware回到原帖楼主,这么好的代码,如果有个好的标题的话,有利于更多人看到,哈哈 |
|
|
|
4楼#
发布于:2021-02-22 10:45
|
|
好说