多个koa中间件执行顺序
多个中间件执行顺序
多个中间件会形成一个栈结构(middle stack),以"先进后出"(first-in-last-out)的顺序执行。
- 最外层的中间件首先执行。
- 调用next函数,把执行权交给下一个中间件。
... - 最内层的中间件最后执行。
- 执行结束后,把执行权交回上一层的中间件。
... - 最外层的中间件收回执行权之后,执行next函数后面的代码。请看下面的例子
const Koa = require("koa"); const app = new Koa(); let arr; // 第一个中间件 app.use(async (ctx, next) => { arr = []; arr.push(1); await next(); arr.push(2); }); // 第二个中间件 app.use(async (ctx, next) => { arr.push(3); await next(); arr.push(4); }); // 第三个中间件 app.use(async (ctx, next) => { arr.push(5); await next(); arr.push(6); }); // 输出 app.use(async ctx => { arr.push(7); ctx.body = arr; }); app.listen(3000, () => { console.log("server start at http://127.0.0.1:3000"); }); // 最后方法 http://127.0.0.1 的结果就得到 [1,3,5,7,6,4,2]
异步中间件
如果有异步操作(比如读取数据库),中间件就必须写成 async 函数。请看下面的例子。
const fs = require('fs.promised'); const Koa = require('koa'); const app = new Koa(); const main = async function (ctx, next) { ctx.response.type = 'html'; ctx.response.body = await fs.readFile('./demos/template.html', 'utf8'); }; app.use(main); app.listen(3000);
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
前后端分离的好处
前后端的分离也实现了前后端架构的分离,带来的好处有: *整个项目的开发权重往前移,实现真正的前后端解耦,动态资源和静态资源分离,提高了性能和扩展性 *前端静态化 *前端有且仅有静态内容,再明确些,只有HTML/CSS/JS *其内容来自于完全静态的资源而不需要任何后台技术进行动态化组装。 *前端内容的运行环境和引擎完全基于浏览器本身。 *后端数据化 *后端可以用任何语言,技术和平台实现。 *遵循一个原则:只提供数据,不提供任何和界面表现有关的内容。 *统一API接口,接口完全可以共用。 *提供的数据可以用于任何其他客户端(如IOS,安卓,pc,微信小程序等) *通过一些代码重构,就可以大量复用接口,提升效率 *平台无关化 *前端三大技术(HTML/CSS/JS)本身就是平台无关的。 *后台链接部分的本质是实现合适的RESTful接口和交互JSON数据,就这两者而言,任何技术和平台都可以实现。 *前后端交给不同的人来编写,明确划分职责,发现bug的时候可以快速定位。 *vue.js等框架编写前...
- 下一篇
大龄程序员的出路在何方?
大龄程序员的出路在何方?这个话题不仅中国程序员关心,国外的程序员也关心!但是国内国外的情况并不一样。我主要关心在中国,大龄程序员的未来在哪里?下面我们一起来看看中国的大龄程序员现在热炒的问题! 很多人反映,程序员年龄大了。体力越来越差,将来怎么办?我相信这是很多程序员将来即将面临的问题!身体差不是程序员的普遍现象,但是也有不少数的程序员是这样的。程序员由于经常坐,脑力劳动多,体力劳动少,所以不免有一些程序员个人体力退化严重! 很多人将程序员的身体差归结为,加班多导致的。下面我一起来看一个网上被热炒的笑话: 程序员问科比:“你为什么这么成功? ” 科比:“你知道洛杉矶凌晨四点是什么样子吗? ” 程序员:“知道,一般那个时候我还在写代码,怎么了?” 科比:“额…….没什么,随便问问” 上面内容摘录于网上,虽然是一个笑话,但是确实反映出了,程序员加班严重的问题,但这并不是普遍现象! 说到这里,也给大家推荐一个架构交流学习群:835544715,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS关闭SELinux安全模块