fastflux
Version:
Message driven reactive state management
44 lines (35 loc) • 1.08 kB
JavaScript
exports.__esModule = true;
exports.createAction = createAction;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _observableBaseJs = require('./observable/base.js');
var _observableBaseJs2 = _interopRequireDefault(_observableBaseJs);
var _utilsIndexJs = require('../utils/index.js');
/**
* Creates an observable function that
* invokes the nested inner function.
*
* The inner function may call `emit`.
*
* @example
* let mul = createAction(emit => function (x, y) {
* emit(x * y)
* });
* mul.subscribe(result => console.log("Result:", result));
*
* //> Result: 25
* mul(5, 5);
* @param {function(emit: function): function} getRunner
* @returns {function}
*/
function createAction(getRunner) {
var runner = getRunner(function (payload) {
return action.emit(payload);
});
var action = function action() {
runner.apply(undefined, arguments);
};
action = _utilsIndexJs.assign(action, _observableBaseJs2['default'].prototype);
action._listeners = [];
return action;
}
;