博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单的堆栈,逻辑很清晰
阅读量:5334 次
发布时间:2019-06-15

本文共 2304 字,大约阅读时间需要 7 分钟。

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)    })

  

    我的博客,来看吧!

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

转载于:https://www.cnblogs.com/jiebba/p/7495016.html

你可能感兴趣的文章
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
SQL Server用户权限详解
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
set,env,export,set -x,set -e;
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>