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

koa的剥洋葱模型

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

  目前为止我们已经成功实现了上下文context对象、请求request对象和响应response对象模块,还差一个最重要的模块,就是koa的中间件模块,koa的中间件机制是一个剥洋葱式的模型,多个中间件通过use放进一个数组队列然后从外层开始执行,遇到next后进入队列中的下一个中间件,所有中间件执行完后开始回帧,执行队列中之前中间件中未执行的代码部分,这就是剥洋葱模型,koa的中间件机制。


  koa的剥洋葱模型


  在koa1中使用的是generator+co.js去实现的,koa2则使用了async/await+Promise去实现的,接下来我们基于async/await+Promise去实现koa2中的中间件机制。首先,假设当koa的中间件机制已经做好了,那么它是能成功运行下面代码的:


  letKoa=require('../src/application');


  letapp=newKoa();


  app.use(async(ctx,next)=>{


  console.log(1);


  awaitnext();


  console.log(6);


  });


  app.use(async(ctx,next)=>{


  console.log(2);


  awaitnext();


  console.log(5);


  });


  koa中间件机制和剥洋葱模型的实现


  app.use(async(ctx,next)=>{


  console.log(3);


  ctx.body="helloworld";


  console.log(4);


  });


  app.listen(3000,()=>{


  console.log('listenningon3000');


  });


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

抱歉!评论已关闭.