一个简单的堆栈,逻辑很清晰

Posted 小结巴巴吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的堆栈,逻辑很清晰相关的知识,希望对你有一定的参考价值。

  function Stack(type) {
        function QueueConst() {}
        QueueConst.execute_ing=[],
        QueueConst.execute_no=[],
        QueueConst.state=1,
        QueueConst.type = type?type:false
        QueueConst.prototype.stop=function () {//暂停
        QueueConst.state=2
    }
        QueueConst.prototype.reset=function () { //恢复
        QueueConst.state=3
        QueueConst.prototype.execute();
    }
        QueueConst.prototype.execute=function () { //执行队列
        if(QueueConst.state==2) return;
        var currentItem = null
        if(QueueConst.execute_ing.length>0){
            currentItem = QueueConst.execute_ing.shift()
            if(QueueConst.type){
                currentItem(QueueConst.prototype.reset)
                QueueConst.prototype.stop()
            }else {
                currentItem()
                QueueConst.prototype.execute()
            }
            //执行当前
        }else {
            if(QueueConst.execute_no.length<1) {//完成队列里面的任务;
                QueueConst.state = 1
                return
            };
            QueueConst.execute_ing = QueueConst.execute_no.reverse()
            QueueConst.execute_no=[]
            QueueConst.prototype.execute()
        }
    }
        QueueConst.prototype.add=function (item) {//添加任务
        QueueConst.execute_no.push(item)
        if(QueueConst.state==1) QueueConst.state=3
        QueueConst.prototype.execute();
        }
        return new QueueConst()
}
    var que = Stack(true);
    que.add(function (next) {
        var index = 1;
        var loop = setInterval(function () {
            console.log(index++)
        },1000)
        setTimeout(function () {
            next();console.log(\'one\')
            clearInterval(loop)
        },5000)
    })
    que.add(function (next) {
        var index = 1;
        var loop = setInterval(function () {
            console.log(index++)
        },1000)
        setTimeout(function () {
            next();console.log(\'two\')
            clearInterval(loop)
        },3000)
    })
    que.add(function (next) {
        var index = 1;
        var loop = setInterval(function () {
            console.log(index++)
        },1000)
        setTimeout(function () {
            next();console.log(\'three\')
            clearInterval(loop)
        },3000)
    })

  

http://www.cnblogs.com/jiebba/p/6575214.html 

http://www.cnblogs.com/jiebba    我的博客,来看吧!

如果有错误,请留言修改下 哦!

以上是关于一个简单的堆栈,逻辑很清晰的主要内容,如果未能解决你的问题,请参考以下文章

一个简单的js队列,逻辑很清晰

清晰架构(Clean Architecture)的Go微服务: 事物管理

Android特效专辑——点击水波纹效果实现,逻辑清晰实现简单

查看发票组代码后的总结和有感

替换或删除后台堆栈上现有片段的代码不起作用

一个基于 不锈钢的简单学生管理系统,项目概述全面,代码注释详细,逻辑结构清晰,对于初学 不锈钢的同学非常具有参考与学习价值哟 !