neatly
Version:
Neat, extensible and dead simple di system
39 lines (23 loc) • 578 B
JavaScript
;
function ExtendProvider() {
const queues = {
start: [],
stop: []
};
this._runQueue = function(name) {
// execute queue in a chain of promises
return queues[name].reduce((acc, fn) => {
return acc.then(() => fn());
}, Promise.resolve())
.then(() => delete queues[name]);
};
this.$get = function() {
return function $ext(queueName, fn) {
if (!queues.hasOwnProperty(queueName)) {
throw new Error(`Extionsion point ${queueName} not available`);
}
queues[queueName].push(fn);
};
};
}
module.exports = ExtendProvider;