kibana-123
Version:
Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic
51 lines (40 loc) • 852 B
JavaScript
import _ from 'lodash';
function WorkQueue() {
let q = this;
let work = [];
let fullDefers = [];
q.limit = 0;
Object.defineProperty(q, 'length', {
get: function () {
return work.length;
}
});
let resolve = function (defers) {
return defers.splice(0).map(function (defer) {
return defer.resolve();
});
};
let checkIfFull = function () {
if (work.length >= q.limit && fullDefers.length) {
resolve(fullDefers);
}
};
q.resolveWhenFull = function (defer) {
fullDefers.push(defer);
checkIfFull();
};
q.doWork = function () {
let resps = resolve(work);
checkIfFull();
return resps;
};
q.empty = function () {
work.splice(0);
checkIfFull();
};
q.push = function (defer) {
work.push(defer);
checkIfFull();
};
}
export default WorkQueue;