koa2的洋葱模型结构就像一个洋葱请求过程,通过一个洋葱。有一个来回的核心code://函数集(相当于中间件集)letarr=[(next)=>{console.log('a1');下一个();console.log('a2');},(next)=>{console.log('b1');下一个();console.log('b2');},(next)=>{console.log('c1');下一个();console.log('c2');},];//用递归实现洋葱模型letdispatch=(i)=>{letfn=arr[i];if(typeoffn!=='function')returnletnext=()=>dispatch(i+1);fn(next)}dispatch(0)//运行结果==>a1>b1>c1>c2>b2>包装a1,用中间件调用。让a=(next)=>{console.log('a1');下一个();console.log('a2');}letb=(next)=>{console.log('b1');下一个();console.log('b2');}letc=(next)=>{console.log('c1');下一个();console.log('c2');}letcompose=(arr)=>{return(args)=>{console.log(args);letdispatch=(index)=>{letfn=arr[index];if(typeoffn!=='function')returnletnext=()=>dispatch(index+1);fn(下一步);}派遣(0)}}撰写([一个,b,c])('外部参数');结尾
