zoukankan      html  css  js  c++  java
  • 一个简单的堆栈,逻辑很清晰

      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    我的博客,来看吧!

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

  • 相关阅读:
    devexpress13学习系列(三)PDFViewer(3)
    devexpress13学习系列(一)PDFViewer(2)
    devexpress13学习系列(一)PDFViewer(1)
    Android图像处理之Bitmap类(zz)
    laravel 制作购物车流程
    数据类型转换
    http返回值
    前段框架
    开启GD拓展
    PHP初级程序员出路
  • 原文地址:https://www.cnblogs.com/jiebba/p/7495016.html
Copyright © 2011-2022 走看看