首页 > 其他 > 详细

koa2中间键原理

时间:2019-05-14 20:02:49      阅读:129      评论:0      收藏:0      [点我收藏+]

一、koa2

const http = require(‘http‘);
const compose = require(‘./compose‘);


class Koa {
  constructor() {
    this.ctx = {};
    this.middleWares = [];
  }

  use(fn) {
    this.middleWares.push(fn);
  }

  handler(ctx, fnMiddleware) {
    fnMiddleware(ctx);
  }

  callback() {
    const fn = compose(this.middleWares);
    const handleRequest = () => {
      this.handler(this.ctx, fn);
    };
    return handleRequest;
  }

  listen(...args) {
    const server = http.createServer(this.callback());
    server.listen(...args);
  }
}

module.exports = Koa;

 

二、compose 中间键组合

function compose(middleWare) {
  return function fnMiddleWare(ctx) {
    function dispatch(i) {
      const fn = middleWare[i];
      if (!fn) return Promise.resolve();
      try {
        return Promise.resolve(fn(ctx, dispatch.bind(null, i + 1)));
      } catch (error) {
        return Promise.reject(error);
      }
    }
    return dispatch(0);
  };
}

module.exports = compose;

 

koa2中间键原理

原文:https://www.cnblogs.com/shangyueyue/p/10863947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!