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

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

  • 相关阅读:
    Mysql 执行安装脚本报错Changed limits:
    Centos6.6 安装Mysql集群
    Oracle11g RAC+DG搭建
    Oracle用函数或PIVOT实现行转列
    Oracle根据列中的特殊符号进行分组
    Hadoop on Windows with Eclipse -02- Prerequisites
    Hadoop on Windows with Eclipse -01- Introduction
    Hadoop入门之WordCount运行详解
    Hadoop namenode无法启动问题解决
    jar 打包命令详解
  • 原文地址:https://www.cnblogs.com/jiebba/p/7495016.html
Copyright © 2011-2022 走看看