您现在的位置是:首页 > 文章详情

多个koa中间件执行顺序

日期:2018-10-14点击:430

多个中间件执行顺序

多个中间件会形成一个栈结构(middle stack),以"先进后出"(first-in-last-out)的顺序执行。

  1. 最外层的中间件首先执行。
  2. 调用next函数,把执行权交给下一个中间件。
    ...
  3. 最内层的中间件最后执行。
  4. 执行结束后,把执行权交回上一层的中间件。
    ...
  5. 最外层的中间件收回执行权之后,执行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); 
原文链接:https://yq.aliyun.com/articles/666754
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章