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

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

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

时间: 2024-08-30 06:26:36

一个简单的堆栈,逻辑很清晰的相关文章

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

function Queue(type) { //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.

计算机程序的思维逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列

本节介绍内存映射文件,内存映射文件不是Java引入的概念,而是操作系统提供的一种功能,大部分操作系统都支持. 我们先来介绍内存映射文件的基本概念,它是什么,能解决什么问题,然后我们介绍如何在Java中使用,我们会设计和实现一个简单的.持久化的.跨程序的消息队列来演示内存映射文件的应用. 基本概念 所谓内存映射文件,就是将文件映射到内存,文件对应于内存中的一个字节数组,对文件的操作变为对这个字节数组的操作,而字节数组的操作直接映射到文件上.这种映射可以是映射文件全部区域,也可以是只映射一部分区域.

来写一个简单的PHP MVC结构

MVC结构,其实就是三个Model,Contraller,View单词的简称,Model,主要任务就是把数据库或者其他文件系统的数据按照我们需要的方式读取出来.View,主要负责页面的,把数据以html的形式显示给用户.Controller,主要负责业务逻辑,根据用户的 Request进行请求的分配,比如说显示登陆界面,就需要调用一个控制器userController的方法loginAction来显示.云鼎娱乐城 下面我们用PHP来创建一个简单的MVC结构系统. 首先创建单点入口,即bootst

从一个简单的小实例分析JSP+Servelt与JSP+Struts2框架的区别

最近在学struts2,struts2相比以前的JSP+Servlet,在处理流程上的更简单,我们就一个小实例来具体分析一下. 实例内容如下: 实现一个简单的注册页面包括:用户名.密码.重复密码.年龄.出生日期.毕业日期 要求如下:用户名的长度在4-6之间密码的长度在4-6之间重复密码与密码相等年龄在10-50之间出生日期在毕业日期之前 输入错误返回原页面,并在原页面的文本框后面显示具体的错误信息.正确输入则跳入下个页面将信息显示出来. 1.JSP+Servlet 1)我们编写注册页面regis

[转]PHP实现MVC开发: 一个简单的MVC

今天研究了下PHP MVC结构,所以决定自己写个简单的MVC,以待以后有空再丰富.至于什么MVC结构,其实就是三个Model,Contraller,View单词的简称,,Model,主要任务就是把数据库或者其他文件系统的数据按 照我们需要的方式读取出来.View,主要负责页面的,把数据以html的形式显示给用户.Controller,主要负责业务逻辑,根据用户的 Request进行请求的分配,比如说显示登陆界面,就需要调用一个控制器userController的方法loginAction来显示.

PHP (20140523)PHP实现MVC开发: 一个简单的MVC

今天研究了下PHP MVC结构,所以决定自己写个简单的MVC,以待以后有空再丰富.至于什么MVC结构,其实就是三个Model,Contraller,View单词的简称,,Model,主要任务就是把数据库或者其他文件系统的数据按 照我们需要的方式读取出来.View,主要负责页面的,把数据以html的形式显示给用户.Controller,主要负责业务逻辑,根据用户的 Request进行请求的分配,比如说显示登陆界面,就需要调用一个控制器userController的方法loginAction来显示.

从一个简单的 JPA 示例开始

本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例:接着重构该示例,并引入 Spring 框架,这两部分不会涉及过多的篇幅,如果希望能够深入学习 Spring 和 JPA,可以根据本文最后提供的参考资料进一步学习. 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之

一个简单的PHP模板引擎

PHP早期开发中通常是PHP代码和HTML代码混写,这也使代码中充斥着数据库操作,逻辑处理等.当项目不大时,这样的代码还可以接受,但是随着项目不断扩大,我们就会发现同一个文件中同时存在前端逻辑和后端处理,当逻辑越来越复杂时,代码的可读性和可维护性都会变得非常差,以至于后来不得不进行大规模的代码重构.所以后来就出现了代码分层的思想,尽量拆分开前端代码和后端代码. PHP模板引擎能解决这种混乱吗?当然可以.但是呢,即使你不用专门的模板引擎也可以写出逻辑清晰的代码,重点是要有分层的思想,有专门的脚本去

linux内核分析 第三周 构造一个简单的Linux系统MenuOS

一.计算机的三个法宝 存储程序计算机,函数调用堆栈,中断二.操作系统的两把剑:1.中断上下文的切换,保存现场和恢复现场2.进程上下文的切换. 三.linux内核源代码的分析: ·arch/目录保存支持多种CPU类型的源代码,重点是x86·init目录:含有main.c,内核启动相关的代码基本都在init目录下·ipc目录:进程间的通信·kernel目录:有Linux内核的核心代码.四.构造一个简单的Linux系统 使用实验楼的虚拟机打开shell 1.cd LinuxKernel/2.qemu