class Koa {constructor() {this.middleWaver = []}use(fn) {this.middleWaver.push(fn)}};
const app = new Koa();const f1 = async function (ctx, next) {console.log('f1 >>');await next(); // 该代码代表f2函数执行返回的结果console.log('f1 <<');};const f2 = async function (ctx, next) {console.log('f2 >>');await next();// 该代码代表f3函数执行返回的结果console.log('2 <<');};const f3 = async function (ctx, next) {console.log('f3 >>');await next();console.log('f3 <<');};// 01: 使用use用来收集函数app.use(f1);app.use(f2);app.use(f3);const one = mix(app.middleWaver);one({ ctx: '上下文' });
 // 02: 闭包传递ctx参数const mix = function (mid) {/*mid收集的所有的中简介ctx:上下文  next:下一个函数fn(ctx,next)推进栈内,最顶部函数触发执行01: 第一个执行必须依赖第二的执行结果02: 第二个的依赖第三个执行结果03: 第三个依赖第四个04:直到最底部的执行完毕,然后结果一层一层将结果返回上一层知道最顶层*/return function hi(ctx) {const i = 0;// 类似循环,上一个执行依赖下一个执行的结果function dispacth(i) {const fn = mid[i];if (!fn) {return Promise.resolve() // 最后一个unefined,返回给await 一个promise};// await next() => await等待的是promise函数// 确保返回的是promise函数return Promise.resolve(fn(ctx, function next() { dispacth(i + 1) }));};dispacth(0);}};

KOA中await next分析?相关推荐

  1. 玩转Koa之核心原理分析

    Koa作为下一代Web开发框架,不仅让我们体验到了async/await语法带来同步方式书写异步代码的酸爽,而且本身简洁的特点,更加利于开发者结合业务本身进行扩展. 本文从以下几个方面解读Koa源码: ...

  2. nodejs的koa中cookie和session的使用,cookie和session的区别

    1.cookie是存储于访问者的计算机中的数据,用于同一浏览器访问同一域的时候共享数据 2.HTTP是无状态协议.也就是说:当你浏览了一个页面,然后跳转到同一个网站的另一个页面,服务器无法认识到这是同 ...

  3. 说说你对koa中洋葱模型的理解?

    用过Koa的,肯定对 Middleware(中间件) 有所了解,那我们就用中间件从现象出发,理解洋葱模型 先自定义两个中间件: logTime:打印时间戳 module.exports=functio ...

  4. 谈谈Koa 中的next

    前言 最近在试着把自己写的 koa-vuessr-middleware 应用在旧项目中时,因为旧项目Koa 版本为1.2,对中间件的支持不一致,在转化之后好奇地读了一下源码,整理了一下对Koa 中ne ...

  5. koa --- nunjucks在Koa中的使用、中间件的配置

    Nunjucks在Koa中的应用 app.js const koa = require('koa'); const app = new koa(); const router = require('. ...

  6. Koa 中实现 chunked 数据传输

    有关于 Transfer-Encoding:chunked 类型的响应,参见之前的文章HTTP 响应的分块传输.这里看 Koa 中如何实现. Koa 中请求返回的处理 虽然官方文档有描述说明不建议直接 ...

  7. KOA中的ejs的基本使用

    ejs 服务端模板引擎 ejs文件也可以使用script标签 来写js内容 在koa中使用ejs 先导入和注册 const views = require('koa-views') app.use(v ...

  8. Koa中使用art-template模板引擎,以及如何接受post请求等

    直接上代码,每个代码的作用都有注释: 实现了以下功能: 1.koa中如何使用路由 2.koa中如何使用art-template模板引擎 3.koa中如何使用koa-static解析静态文件 4.koa ...

  9. Node.js(二)——pug模板引擎,nunjucks模板引擎,在koa中使用pug和nunjucks模板引擎

    目录 1.知识点及课堂目标 2.模板引擎 3.pug模板引擎使用 3.1安装pug 3.2pug常用语法 3.2.1通过缩进关系,代替以往html的层级包含关系. 3.2.2html 元素属性/sty ...

最新文章

  1. 军工企业敏捷项目管理
  2. 演示:GLBP跟踪功能、权值、与不同的负载均衡方式
  3. 五分钟内搭建的混沌电路
  4. CentOS/用FTP客户端软件连接到服务器
  5. How to save your Ethereum Dapp users from paying gas for transactions
  6. 掘金-Markdown 编辑器使用手册
  7. linux进程号转换成16进制,Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)...
  8. android让文件按顺序列表,Java/Android 获取文件夹的文件列表(file.listFiles())并按名称排序,中文优先...
  9. 架构大型企业Java项目–我的虚拟JUG会话
  10. arcgis缓冲后在envi中聚类出错
  11. python创建只包含一个元素的元组时_Python中声明只包含一个元素的元组数据方法...
  12. Python 处理 CSV/EXCEL 表格文件
  13. python树结构实现小顶堆_数据结构和算法入门之小顶堆和大顶堆Python实现
  14. 由数据范围反推算法复杂度
  15. 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
  16. 设计一个三阶巴特沃斯滤波器_巴特沃斯低通滤波器设计分析.doc
  17. zt电脑围棋中的人工智能技术
  18. 指数函数对数函数导数定义推导
  19. 高德地图的测试key_获取高德地图key
  20. 2018-2019-2 20189201 《网络攻防实践》第八周作业

热门文章

  1. 如何制作电子证件照?十秒学会这个方法
  2. 大学计算机怎么划分子网掩码,如何划分子网及确定子网掩码
  3. 好佳居十大软装品牌 窗帘类型中的百叶窗怎么选择和搭配?
  4. 这四种窗帘款式你用对了吗?-江南爱窗帘十大品牌
  5. Flutter引入iconfont图标,并自动生成dart图标文件
  6. 网易游戏TTT面试总结
  7. Tableau 十、人口金字塔、漏斗图、箱线图
  8. 2020.11.5--AE--基础形状动画创建、工具栏、关键帧属性
  9. 关于eclipse的代码提示Content Assist
  10. android app 短信接收,如何在Android中接收短信?