挺有意思的,队列,先进先出,排队进行!

/**
 * [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);
}

很有意思,第一次使用了队列的思想!

原文地址:https://www.cnblogs.com/jiqing9006/p/6710353.html