KOA中await next分析?
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分析?相关推荐
- 玩转Koa之核心原理分析
Koa作为下一代Web开发框架,不仅让我们体验到了async/await语法带来同步方式书写异步代码的酸爽,而且本身简洁的特点,更加利于开发者结合业务本身进行扩展. 本文从以下几个方面解读Koa源码: ...
- nodejs的koa中cookie和session的使用,cookie和session的区别
1.cookie是存储于访问者的计算机中的数据,用于同一浏览器访问同一域的时候共享数据 2.HTTP是无状态协议.也就是说:当你浏览了一个页面,然后跳转到同一个网站的另一个页面,服务器无法认识到这是同 ...
- 说说你对koa中洋葱模型的理解?
用过Koa的,肯定对 Middleware(中间件) 有所了解,那我们就用中间件从现象出发,理解洋葱模型 先自定义两个中间件: logTime:打印时间戳 module.exports=functio ...
- 谈谈Koa 中的next
前言 最近在试着把自己写的 koa-vuessr-middleware 应用在旧项目中时,因为旧项目Koa 版本为1.2,对中间件的支持不一致,在转化之后好奇地读了一下源码,整理了一下对Koa 中ne ...
- koa --- nunjucks在Koa中的使用、中间件的配置
Nunjucks在Koa中的应用 app.js const koa = require('koa'); const app = new koa(); const router = require('. ...
- Koa 中实现 chunked 数据传输
有关于 Transfer-Encoding:chunked 类型的响应,参见之前的文章HTTP 响应的分块传输.这里看 Koa 中如何实现. Koa 中请求返回的处理 虽然官方文档有描述说明不建议直接 ...
- KOA中的ejs的基本使用
ejs 服务端模板引擎 ejs文件也可以使用script标签 来写js内容 在koa中使用ejs 先导入和注册 const views = require('koa-views') app.use(v ...
- Koa中使用art-template模板引擎,以及如何接受post请求等
直接上代码,每个代码的作用都有注释: 实现了以下功能: 1.koa中如何使用路由 2.koa中如何使用art-template模板引擎 3.koa中如何使用koa-static解析静态文件 4.koa ...
- Node.js(二)——pug模板引擎,nunjucks模板引擎,在koa中使用pug和nunjucks模板引擎
目录 1.知识点及课堂目标 2.模板引擎 3.pug模板引擎使用 3.1安装pug 3.2pug常用语法 3.2.1通过缩进关系,代替以往html的层级包含关系. 3.2.2html 元素属性/sty ...
最新文章
- 军工企业敏捷项目管理
- 演示:GLBP跟踪功能、权值、与不同的负载均衡方式
- 五分钟内搭建的混沌电路
- CentOS/用FTP客户端软件连接到服务器
- How to save your Ethereum Dapp users from paying gas for transactions
- 掘金-Markdown 编辑器使用手册
- linux进程号转换成16进制,Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)...
- android让文件按顺序列表,Java/Android 获取文件夹的文件列表(file.listFiles())并按名称排序,中文优先...
- 架构大型企业Java项目–我的虚拟JUG会话
- arcgis缓冲后在envi中聚类出错
- python创建只包含一个元素的元组时_Python中声明只包含一个元素的元组数据方法...
- Python 处理 CSV/EXCEL 表格文件
- python树结构实现小顶堆_数据结构和算法入门之小顶堆和大顶堆Python实现
- 由数据范围反推算法复杂度
- 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
- 设计一个三阶巴特沃斯滤波器_巴特沃斯低通滤波器设计分析.doc
- zt电脑围棋中的人工智能技术
- 指数函数对数函数导数定义推导
- 高德地图的测试key_获取高德地图key
- 2018-2019-2 20189201 《网络攻防实践》第八周作业