使用迭代器实现中间件

MiddleAware.js

export default functions => {
    function * generator(arr) {
        for (let item of arr) {
            yield item;
        }
    }

    const it = generator(functions);

    const init = () => {
        doNext(it.next());
    };

    function doNext(n) {
        n.value(() => {
            let next = it.next();

            if (next.done){
                return;
            }

            doNext(next);
        });
    }

    init();
}

Test.js

import M from "./MiddleAware";

const cut = 5; //中止开关
const arr = [];

for (let count = 0; count < 8; count++ ){
    arr.push(next => {
        console.log(count);
        if (count !== cut){
            next();
        }
    });
}

M(arr);


/**********************************************
 *  如上这种 迭代器 的使用方式,可以使用在比较  *
 *  多的链式调用之中,比如:                   *
 *       validate form ->                     *
 *         validate token ->                  *
 *           check token expire ->            *
 *             login ->                       *
 *               redirect page ->             *
 *   其中有一个不成功,后续不进行               *
 **********************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值