美文网首页
模拟一个超级简单的中间件

模拟一个超级简单的中间件

作者: DoEmpty | 来源:发表于2021-04-20 14:07 被阅读0次
class Midware {
    midwares = []
    use(fn) {
        this.midwares.push(fn)
    }

    start(initialCtx) {
        this.dispatch(0, initialCtx);
    }

    dispatch(index, ctx) {
        let current = this.midwares[index];
        if (index == this.midwares.length) {
            return Promise.resolve('所有执行完了');
        }
        return current(ctx, () => this.dispatch(index + 1, ctx))
    }
}

var ware = new Midware();
ware.use(async (ctx, next) => {
    ctx.age = 20;
    const result = await next()
    result.push('执行完了1')
    ctx.response = result;
})
ware.use(async (ctx, next) => {
    ctx.name = 'kerry';
    const result = await next()
    result.push('执行完了2')
    return result;
})
ware.use(async (ctx, next) => {
    ctx.money = 100000000000;
    const result = await next()
    return [result];
})
let context = {}
ware.start(context)
console.log(context)

相关文章

  • 模拟一个超级简单的中间件

  • Promise 自定义错误捕获

    这里模拟一个简单的请求过程, 实际开发中除了对数据做业务处理外。 还需要做异常处理。全局错误,中间件错误,本地错误...

  • 手写一个超简单的Node中间件

    手写一个超简单的中间件 一个很简单的中间件,其作用仅仅是打印出当前访问的URL。 创建一个项目目录: mkdir ...

  • nodejs学习笔记

    什么是中间件简单说,中间件(middleware)就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,...

  • RN-自定义中间件(网络请求)

    store => next => action =>{}这就是一个中间件的声明方式 下面就是一个简单的中间件,什么...

  • koa中间件原理

    之前有写过koa中间件的简单使用,简单回顾下: 运行: 以上就是koa中间件的使用,可以看出中间件的执行时通过us...

  • docker 安装mycat

    1:mycat简介 •一个用于MySQL读写分离和与数据切分的高可用中间件 •一个模拟为MySQLServer的超...

  • Python篇-Django进阶篇

    一 : CSRF验证 为了防止模拟跨站访问的CSRF攻击,Django里中间件通常会设置一个django.midd...

  • 基于mysql的分布式数据库中间件-Mycat

    一、Mycat 根据官网的定义:Mycat是一个可以用于MySQL读写分离和高可用的中间件,一个模拟为MySQL ...

  • iris 起步

    安装 简单服务器例子 使用中间件 1.安装 2.简单服务器 3.使用中间件

网友评论

      本文标题:模拟一个超级简单的中间件

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