何泽弘

何泽弘的博客

这是一个中二半吊子码农分享学习经验和生活的网站...

实现javascript中的队列结构


核心方法:

var Queue = (function () {
    function Queue (worker, concurrency) {
        this.tasks = [];
        this.worker = typeof worker === 'function' ? worker : null;
        this.concurrencyMax = typeof concurrency === 'number' && concurrency > 0 ? concurrency : 1;
        this.concurrencyCut = 0;
        this.drain = null;
    }
    Queue.prototype._start = function () {
        if (this.tasks.length === 0 || this.concurrencyCut >= this.concurrencyMax) {
            return ;
        }
        var taskData = this.tasks.shift();
        this.concurrencyCut += 1;
        this.worker && this.worker(taskData.task, this._next.bind({ taskData: taskData, self: this }));
    };
    Queue.prototype._next = function () {
        var self = this.self;
        var taskData = this.taskData;
        taskData.callback && taskData.callback.apply(this, arguments);
        self.concurrencyCut -= 1;
        if ( self.tasks.length > 0 ) { return self._start(); }
        if ( self.concurrencyCut === 0 ) { return self.drain && self.drain(); }
    };
    Queue.prototype.push = function (task, callback) {
        this.tasks.push({ task: task, callback: callback });
        if ( this.concurrencyCut < this.concurrencyMax ) { return this._start(); }
    };
    return Queue;
})();
我的博客终于诞生了

我的博客终于诞生了


今天,2017年4月22日,在互联网这个的地方,建立了属于我的小空间。可能不会经常更新(其实都不知道自己以后会不会记得来这里逛一逛),但我会尽量留下一些我生活上,学习上让我我值得学习、回顾、感动的信息。。那么,就简单的随便纪念一下博客的诞生吧。