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

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

  • 相关阅读:
    php环境下所有的配置文件以及作用
    获取登陆用户的ip
    curl模拟post和get请求
    linux 下安装php curl扩展
    php常用面试知识点
    git使用步骤
    laravel框架基础知识点
    ci框架基础知识点
    ajax
    Mysql 中需不需要commit
  • 原文地址:https://www.cnblogs.com/jiebba/p/7495016.html
Copyright © 2011-2022 走看看