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

简介: function Stack(type) { function QueueConst() {} QueueConst.execute_ing=[], QueueConst.
  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    我的博客,来看吧!

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

相关文章
|
3月前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
65 2
|
4月前
|
Android开发 iOS开发
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
49 0
|
4月前
|
C++
c++学习笔记03 程序流程结构
C++学习笔记,主要介绍了程序流程结构,包括顺序结构、选择结构和循环结构。选择结构中详细解释了if语句、三目运算符和switch语句的用法和注意事项。循环结构部分则涵盖了while循环、do-while循环和for循环的语法和使用技巧。此外,还介绍了跳转语句,包括break、continue和goto语句的用途和用法。
38 0
|
Java 数据库 Spring
清晰、明了的@Transcation事务嵌套使用
清晰、明了的@Transcation事务嵌套使用
|
传感器 安全 物联网
0x00 . BlueNRG-1堆栈架构编程 记录总结
0x00 . BlueNRG-1堆栈架构编程 记录总结
|
安全 搜索推荐
如何避免写重复代码?两种常见的方法:抽象和组合
如何避免写重复代码?两种常见的方法:抽象和组合
264 0
|
SQL 缓存 安全
如何避免写重复代码:善用抽象和组合
通过抽象和组合,我们可以编写出更加简洁、易于理解和稳定的代码;类似于金字塔的建筑过程,我们总是可以在一层抽象之上再叠加一层,从而达到自己的目标。但是在日常的开发工作中,我们如何进行实践呢?本文将以笔者在Akka项目中的一段社区贡献作为引子分享笔者的一点心得。
162 0
如何避免写重复代码:善用抽象和组合
|
存储 Web App开发 Java
Android性能优化的底层逻辑
Android性能优化的底层逻辑
245 0
Android性能优化的底层逻辑
|
存储 C++
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现