现在的位置: 首页 > web前端 > 正文

koa通过use函数怎么做

2020年07月06日 web前端 ⁄ 共 881字 ⁄ 字号 评论关闭

  运行成功后会在终端输出123456,那就能验证我们的koa的剥洋葱模型是正确的。接下来我们开始实现,修改application.js文件。


  koa的剥洋葱模型添加如下代码:


  compose(){


  returnasyncctx=>{


  functioncreateNext(middleware,oldNext){


  returnasync()=>{


  awaitmiddleware(ctx,oldNext);


  }


  }


  letlen=this.middlewares.length;


  letnext=async()=>{


  returnPromise.resolve();


  };


  for(leti=len-1;i>=0;i--){


  letcurrentMiddleware=this.middlewares[i];


  next=createNext(currentMiddleware,next);


  }


  awaitnext();


  };


  }


  callback(){


  return(req,res)=>{


  letctx=this.createContext(req,res);


  letrespond=()=>this.responseBody(ctx);


  letonerror=(err)=>this.onerror(err,ctx);


  letfn=this.compose();


  returnfn(ctx);


  };


  }


  koa通过use函数怎么做


  把所有的中间件push到一个内部数组队列this.middlewares中,剥洋葱模型能让所有的中间件依次执行,每次执行完一个中间件,遇到next()就会将控制权传递到下一个中间件,下一个中间件的next参数,剥洋葱模型的最关键代码是compose这个函数。


  总之,koa中createNext函数的作用就是将上一个中间件的next当做参数传给下一个中间件,并且将上下文ctx绑定当前中间件,当中间件执行完,调用next()的时候,其实就是去执行下一个中间件。

抱歉!评论已关闭.