This commit is contained in:
59
node_modules/licia/Readiness.js
generated
vendored
Normal file
59
node_modules/licia/Readiness.js
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
var Class = require('./Class');
|
||||
var toArr = require('./toArr');
|
||||
var each = require('./each');
|
||||
var map = require('./map');
|
||||
var noop = require('./noop');
|
||||
var some = require('./some');
|
||||
exports = Class({
|
||||
initialize: function Readiness() {
|
||||
this._promises = {};
|
||||
this._resolves = {};
|
||||
this._states = {};
|
||||
},
|
||||
signal: function(tasks) {
|
||||
var states = this._states;
|
||||
each(this._getPromises(toArr(tasks)), function(val) {
|
||||
if (!val.state) {
|
||||
states[val.task] = true;
|
||||
val.resolve();
|
||||
}
|
||||
});
|
||||
},
|
||||
isReady: function(tasks) {
|
||||
return !some(this._getPromises(toArr(tasks)), function(val) {
|
||||
return !val.state;
|
||||
});
|
||||
},
|
||||
ready: function(tasks) {
|
||||
var fn =
|
||||
arguments.length > 1 && arguments[1] !== undefined
|
||||
? arguments[1]
|
||||
: noop;
|
||||
return Promise.all(
|
||||
map(this._getPromises(toArr(tasks)), function(val) {
|
||||
return val.promise;
|
||||
})
|
||||
).then(fn);
|
||||
},
|
||||
_getPromises: function(tasks) {
|
||||
var promises = this._promises;
|
||||
var resolves = this._resolves;
|
||||
var states = this._states;
|
||||
return map(tasks, function(task) {
|
||||
if (!promises[task]) {
|
||||
promises[task] = new Promise(function(resolve) {
|
||||
resolves[task] = resolve;
|
||||
states[task] = false;
|
||||
});
|
||||
}
|
||||
return {
|
||||
task: task,
|
||||
promise: promises[task],
|
||||
resolve: resolves[task],
|
||||
state: states[task]
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user