一个简单的js队列,逻辑很清晰
Posted 小结巴巴吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的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.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)
以上是关于一个简单的js队列,逻辑很清晰的主要内容,如果未能解决你的问题,请参考以下文章
清晰架构(Clean Architecture)的Go微服务: 事物管理