一个简单的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)
http://www.cnblogs.com/jiebba/p/6575214.html
http://www.cnblogs.com/jiebba 我的博客,来看吧!
一个简单的js队列,逻辑很清晰的更多相关文章
- Java编程的逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- 简单的js队列
简单的js队列 /** * [Queue] * @param {[Int]} size [队列大小] */ function Queue(size) { var list = []; //向队列中添加 ...
- BAT面试题:使用数组实现一个简单的阻塞队列
这道题是我亲身经历的一道大厂面试题,非常值得分享! 这道题可以分为两个步骤进行编码解答,第一步是基于数组实现一个队列,第二步是实现线程阻塞. 如果是基于数组实现栈的数据结构,那么我们只需要一个指针进行 ...
- Java实现一个简单的循环队列
在某些时候,我们不能被要求像数组一样可以使用索引随机访问,而是需要被限制顺序处理业务,今天介绍一种先进先出(FIFO)的线性数据结构:队列, 当然,还有后进先出(LIFO)的处理方式,即为栈(后续有时 ...
- 一个简单的js面试题
在js群里看到有人发问,于是抱着练手的心态写了答了几个面试题,题目虽然不是太难,却很考验人的编程思维.汗颜,看了别人的答案后才发现自己好像笨了很多. 废话不说了 ,上代码. 1 要求 给一个数组的最后 ...
- 一个简单的 js 时间对象创建
JS中获取时间很常见,凑凑热闹,也获取一个时间对象试试 首先,先了解js的获取时间函数如下: var myDate = new Date(); //创建一个时间对象 myDate.g ...
- Chart.js: 一个简单的 JS Chart Library
Chart.js 是一个 Open Source 的 JavaScript Chart Library.它一共有 6 中 Chart,全都是 HTML5 based. 底下是 Chart.js 所提供 ...
- 一个简单的JS倒计时
看到很多商城都是抢购倒计时的功能,今天闲来无事做了个倒计时.全当学习JS. 主要思路:主要用到Date对象,声明一个变量获取当前时间,在声明一个变量获取结束时间,结束时间-当前时间=剩余时间(倒计时) ...
- 一个简单的例子让你很轻松地明白JavaScript中apply、call、bind三者的用法及区别
JavaScript中apply.call.bind三者的用法及区别 引言 正文 一.apply.call.bind的共同用法 二. apply 三. call 四. bind 五.其他应用场景 六. ...
随机推荐
- 通过创建元素从而实现三个下拉框的联动效果(create.Element("option"))和提交表单时的验证p.match("请选择")
<html> <head> <meta charset="utf-8"> <title>下拉框</title> < ...
- focus、click、blur、display、float、border、absolute、relative、fixed
onfocus:获取焦点,点击时,按着不放 onclick:点击松开之后,未点击其他处 onblur:点击松开之后,又点击其他处 display:block,none,inline block:单独占 ...
- 386 Lexicographical Numbers 字典序排数
给定一个整数 n, 返回从 1 到 n 的字典顺序.例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] .请尽可能的优化算法的时间复杂度和空间复杂度. 输入 ...
- oracle性能优化培训总结
- [ Nowcoder Contest 167 #C ] 部分和
\(\\\) \(Description\) 给出一个长度为\(N\)的数组\(A[i]\),保证\(N\)为 \(2\) 的整次幂. 对于每个 \(i\ (i\in [0,N))\)求所有满足\(( ...
- UNICODE本地编译freescale的i.MX6Q的android4.2.2&android4.4.2 && 全志a80的步骤x1
20151031本地编译freescale的i.MX6Q的android4.2.2&android4.4.2 && 全志a80的步骤x1 2015/10/31 15:07 开始 ...
- MySql备份表数据
一:根据user表创建user_backup表 drop table if exists user_backup; create table user_backup like user; // lik ...
- UVM基础之-------uvm factory机制override<博>
override功能是UVM中一个比较重要的功能,这个功能也是在factory里面实现的,我们会在env或者具体的case中使用override功能. class case_x extends bas ...
- CNN结构:可用于时序预测复合的DNN结构-AcGANs、误差编码网络 ENN
前言:模式识别问题 模式函数是一个从问题定义域到模式值域的一个单射. 从简单的贝叶斯方法,到只能支持二分类的原始支持向量机,到十几个类的分类上最好用的随机森林方法,到可以支持ImageNet上海量18 ...
- VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x
下面是彻底解决方法:在工程的stdafx.h中添加(如有类似语句,需注释掉)#ifndef WINVER // Allow use of features specific to Windows 95 ...