一个简单的js队列,逻辑很清晰
2017-09-08 15:44
127 查看
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.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 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 = Queue(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) }) setTimeout(function () {que.add(function (next) {console.log('three')})},10000)
http://www.cnblogs.com/jiebba/p/6575214.html
http://www.cnblogs.com/jiebba 我的博客,来看吧!
相关文章推荐
- 一个简单的堆栈,逻辑很清晰
- Java编程的逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列
- html、js写了一个简单的计算器
- css3clock.js - 一个用CSS3与纯js实现的简单时钟
- Vue.js如何写一个简单的原生js模块,浏览器中的表现如何?
- 记一个简单的webpack.config.js
- 一个简单的js分页函数
- 简单分析一个通过 js 劫持进行案例
- Java编程的逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
- 一个简单效果用到的js特性(异步编程,匿名函数,闭包)
- 一个简单的阻塞队列实现
- JS实现一个简单的网页钟表
- 用js写一个简单的聊天室
- 数据结构学习三(一个简单的队列实现)
- javascript常用开发笔记:一个简单强大的js日期格式化方法
- 一个简单的 Java 自动批处理队列
- Js拖拽一个简单方法
- 自定义的一个简单时尚js下拉选择框
- 用ReactJs写一个简单的手风琴菜单效果
- 利用JS实现一个简单的二级联动菜单