分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

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

发布时间:2023-09-06 01:09责任编辑:熊小新关键词: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队列,逻辑很清晰

原文地址:http://www.cnblogs.com/jiebba/p/7494981.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved