Koa 洋葱模型

let context = {
data: []
}; async function middleware1(ctx, next) {
console.log('action 001');
ctx.data.push(1);
await next();
console.log('action 006');
ctx.data.push(6);
} async function middleware2(ctx, next) {
console.log('action 002');
ctx.data.push(2);
await next();
console.log('action 005');
ctx.data.push(5);
} async function middleware3(ctx, next) {
console.log('action 003');
ctx.data.push(3);
await next();
console.log('action 004');
ctx.data.push(4);
} Promise.resolve(middleware1(context, async() => {
return Promise.resolve(middleware2(context, async() => {
return Promise.resolve(middleware3(context, async() => {
return Promise.resolve();
}));
}));
}))
.then(() => {
console.log('end');
console.log('context = ', context);
}); // "action 001"
// "action 002"
// "action 003"
// "action 004"
// "action 005"
// "action 006"
// "end"
// "context = { data: [1, 2, 3, 4, 5, 6]}"


https://chenshenhai.github.io/koajs-design-note/note/chapter02/02.html

https://segmentfault.com/a/1190000013981513

https://juejin.im/post/5d28616151882539af1913d2

https://github.com/webfansplz/article/issues/10

https://www.jianshu.com/p/c76d9ffd7899

https://github.com/xixigiggling/my-ice-cream/issues/34

demo

https://github.com/mynane/sil-koa/blob/master/lib/index.js

koa server


const Koa = require("koa");
const app = new Koa(); const log = console.log;
// logger
app.use(async (ctx, next) => {
await next();
// middleware 1, 后执行
const rt = ctx.response.get("X-Response-Time");
log(`\nmiddleware 1, 后执行`, rt);
log(`${ctx.method} ${ctx.url} - ${rt}`);
}); // x-response-time
app.use(async (ctx, next) => {
const start = Date.now();
await next();
// middleware 2, 先执行
const ms = Date.now() - start;
log(`\nmiddleware 2, 先执行`, `${ms}ms`);
ctx.set("X-Response-Time", `${ms}ms`);
}); // response
app.use(async (ctx, next) => {
// log(`response ctx`, ctx);
// await next();
log(`\nmiddleware 0, 最后的 middleware 最先执行`);
ctx.body = "Hello World! <br />powered by koa.js";
}); app.listen(3000);
// app.listen(8080);

https://codesandbox.io/s/koa-server-b88bh



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


最新文章

  1. iOS 编码转换
  2. Linear Algebra lecture 2 note
  3. 用wget扒站时遇到电信劫持
  4. wp手机 htc x310e
  5. dom4j解析xml文档(增删改查)
  6. Java构造方法的含义和使用
  7. [百科] - iLBC
  8. 为不同浏览器创建XMLHttpRequest对象
  9. C语言-人狼羊菜问题-最容易看懂的解决方法及代码
  10. hdu 1358 period KMP入门
  11. Java NIO 学习笔记
  12. php如何计算两个时间戳之间相差的日时分秒
  13. cocos2d-x 颜色
  14. B+树概念学习
  15. 项目管理实践【四】Bug跟踪管理【Bug Trace and Management】
  16. python编程快速上手之第4章实践项目参考答案
  17. JAVA入门[16]-form表单,上传文件
  18. Spring Bean装配
  19. 804. Unique Morse Code Words
  20. Hadoop、Yarn和vcpu资源的配置

热门文章

  1. 跨度实际上是用来计算排位(rank) 目标节点在跳跃表中的排位 有序集 排序计算
  2. RAID系统被初始化
  3. AutoMapper 10.0使用教程
  4. 获取本机IP和主机名
  5. 关于ckfinder上传文件添加自定义处理方案
  6. Calendar 日期判断 等于 。小于。大于
  7. shell(shell简介)
  8. jvm系列一什么是jvm
  9. A - 敌兵布阵 ——B - I Hate It——C - A Simple Problem with Integers(线段树)
  10. UVALive 7276 Wooden Signs