/**
* [Queue]
* @param {[Int]} size [队列大小]
*/
function Queue(size) {
var list = [];
//向队列中添加数据
this.push = function(data) {
if (data==null) {
return false;
}
//如果传递了size参数就设置了队列的大小
if (size != null && !isNaN(size)) {
if (list.length == size) {
this.pop();
}
}
list.unshift(data);
return true;
}
//从队列中取出数据
this.pop = function() {
return list.pop();
}
//返回队列的大小
this.size = function() {
return list.length;
}
//返回队列的内容
this.quere = function() {
return list;
}
}
这个类是核心!
项目中有个刷小礼物的功能,如果同时有多个人刷,就会出现乱七八糟的效果,没有秩序!
通过队列,就能很好的解决!
先定义一个全局队列!
var queue = new Queue(100);
当有礼物刷的时候,就将其存入队列当中!刷第一个礼物的时候,锁死!等第一个礼物刷完的时候,解锁!然后查询队列中是否还有未刷完的礼物,继续刷!
刷礼物,锁上!
queue.push(content); // 存入队列
if (big_gift_flag) {
big_gift_flag = false;
var pop = queue.pop();
showAnim('big_gift_'+ pop.customer_id +'_'+pop.gift_id,pop.gift_id);
}
刷完,解锁!判断队列是否还有未刷的礼物!
big_gift_flag = true;
if (queue.quere().length > 0) {
big_gift_flag = false;
var pop = queue.pop();
showAnim('big_gift_' + pop.customer_id + '_' + pop.gift_id, pop.gift_id);
}
很有意思,第一次使用了队列的思想!