marbles
Version:
Front-end framework for routing, http, and data handling
42 lines (38 loc) • 904 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
/* @flow weak */
var __callbacks = [];
/**
* @memberof Marbles
* @mixin
* @desc Simple FLUX Dispatcher
*/
var Dispatcher = {
/**
* @method
* @param {function} callback Function to call events with
* @returns {Number} Dispatch index
*/
register: function register(callback) {
__callbacks.push(callback);
var dispatchIndex = __callbacks.length - 1;
return dispatchIndex;
},
/**
* @method
* @param {Object} event An event object
* @returns {Promise} Resolves when all registered callbacks have been called
*/
dispatch: function dispatch(event) {
var promises = __callbacks.map(function (callback) {
return new Promise(function (resolve) {
resolve(callback(event));
});
});
return Promise.all(promises);
}
};
exports["default"] = Dispatcher;
module.exports = exports["default"];