@spalger/kibana
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
53 lines (42 loc) • 959 B
JavaScript
define(function (require) {
var _ = require('lodash');
function WorkQueue() {
var q = this;
var work = [];
var fullDefers = [];
q.limit = 0;
Object.defineProperty(q, 'length', {
get: function () {
return work.length;
}
});
var resolve = function (defers) {
return defers.splice(0).map(function (defer) {
return defer.resolve();
});
};
var checkIfFull = function () {
if (work.length >= q.limit && fullDefers.length) {
resolve(fullDefers);
}
};
q.resolveWhenFull = function (defer) {
fullDefers.push(defer);
checkIfFull();
};
q.doWork = function () {
var resps = resolve(work);
checkIfFull();
return resps;
};
q.empty = function () {
work.splice(0);
checkIfFull();
};
q.push = function (defer) {
work.push(defer);
checkIfFull();
};
}
return WorkQueue;
});