美文网首页
Koa 洋葱模型简单实现

Koa 洋葱模型简单实现

作者: 立立亭亭 | 来源:发表于2020-09-10 11:05 被阅读0次

直接上代码

const http = require("http");

class Koa {
  constructor() {
    this.middleware = [];
  }
  use(fn) {
    this.middleware.push(fn);
  }
  listen(port) {
    let middleware = this.middleware;
    let _this=this;
    function serverFunc(req, res) {
      let context = {
        req,
        res,
        ctx:_this
      };
      let length = middleware.length;
      run(0);
      function run(n) {
        if (n < length) {
          const fn = middleware[n];
          try {
            return Promise.resolve(fn(context, run.bind(null, n + 1)));
          } catch (err) {
            return Promise.reject(err);
          }
        } else if (n === length) {
          return Promise.resolve();
        }
      }
    }
    const app = http.createServer(serverFunc);
    _this.app=app;
    app.listen(port);
  }
}

测试

const app = new Koa();
app.use(async (ctx, next) => {
  console.log("one start");
  await next();
  console.log("one end");
});
app.use(async (ctx, next) => {
  console.log("22222 start");
  await next();
  console.log("22222 end");
});
app.use(async (ctx, next) => {
  console.log("33333 start");
  await next();
  console.log("33333 end");
});
app.listen(19191);

运行,在浏览器中访问http://localhost:19191/,运行结果 如下

one start
22222 start
33333 start
33333 end
22222 end
one end

相关文章

  • 【Node】深入浅出 Koa 的洋葱模型

    本文将讲解 koa 的洋葱模型,我们为什么要使用洋葱模型,以及它的原理实现。掌握洋葱模型对于理解 koa 至关重要...

  • Koa 洋葱模型简单实现

    直接上代码 测试 运行,在浏览器中访问http://localhost:19191/[http://localho...

  • koa-router笔记

    基于koa,有自己的next(洋葱模型),有点像发布订阅 用法(npmjs官网) 实现 二级路由 实现

  • koa洋葱模型的实现

  • koa全攻略

    1.什么是洋葱模型 简单介绍 用一句话来说,koa,express框架的中间件的执行顺序,可以比喻成洋葱模型。 我...

  • koa

    koa的处理流程 koa的中间件 洋葱模型实现 通过await next();进入下一个中间件 next是comp...

  • koa洋葱模型

    koa-compose:koa-compose则是将 koa/koa-router 各个中间件合并执行,结合 ne...

  • koa洋葱模型

    前几天面试node,面试官问了koa的中间件是如何实现的,我一想,卧槽,这特么不是我很熟悉的么,然后就哇啦啦啦的一...

  • koa 洋葱模型

    分析 1、首先这是koa2最简单的入门例子,我将通过这个入门例子来演示koa2的洋葱模型 在这里面,app首先是调...

  • Koa2源码阅读: 中间件机制

    中间件机制(洋葱模型):它实现中间件级联调用是借助 koa-compose这个库来实现的。源码只有一个函数。 我...

网友评论

      本文标题:Koa 洋葱模型简单实现

      本文链接:https://www.haomeiwen.com/subject/nfnwrktx.html