利用中间件模式简化代码逻辑

下面这行代码仔细一想,和把业务逻辑抽离成方法,然后一个一个掉方法本质是一样的,但是区别在于我们在中间件注册的方法不应该是业务逻辑,而应该是脱离于业务逻辑提供的一种适用于大多数场景的一个方法,她所提供的功能应该具有单一性 普适性

 

function Middleware(){
                this.cache = [];
            }

            Middleware.prototype.use = function(fn){
                if(typeof fn !== 'function'){
                    throw 'middleware must be a function';
                }
                this.cache.push(fn);
                return this;
            }

            Middleware.prototype.next = function(){
                if(this.middlewares && this.middlewares.length > 0 ){
                    var ware = this.middlewares.shift();
                    ware.call(this, this.next.bind(this));
                }
            }
            Middleware.prototype.handleRequest = function(){//执行请求
                this.middlewares = this.cache.map(function(fn){//复制
                    return fn;
                });
                this.next();
            }

            var middleware = new Middleware();
            middleware.use(function(next){
                console.log(1);
                next();
                console.log('1结束');
            });
            middleware.use(function(next){
                console.log(2);
                next();
                console.log('2结束');
            });
            middleware.use(function(next){
                console.log(3);
                console.log('3结束');
            });
            middleware.use(function(next){
            console.log(4);next();console.log('4结束');
            });
            middleware.handleRequest();

  

转载于:https://www.cnblogs.com/mrzhu/p/10981971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值