redux-logic
Version:
Redux middleware for organizing all your business logic. Intercept actions and perform async processing.
29 lines • 957 B
JavaScript
import "core-js/modules/es.function.name.js";
import { throwError } from 'rxjs';
export default function execProcessFn(_ref) {
var depObj = _ref.depObj,
dispatch = _ref.dispatch,
dispatch$ = _ref.dispatch$,
dispatchReturn = _ref.dispatchReturn,
done = _ref.done,
name = _ref.name,
processFn = _ref.processFn;
try {
var retValue = processFn(depObj, dispatch, done);
if (dispatchReturn) {
// processOption.dispatchReturn true
// returning undefined won't dispatch
if (typeof retValue === 'undefined') {
dispatch$.complete();
} else {
// defined return value, dispatch
dispatch(retValue); // handles observables, promises, ...
}
}
} catch (err) {
// eslint-disable-next-line no-console
console.error("unhandled exception in logic named: ".concat(name), err);
// wrap in observable since might not be an error object
dispatch(throwError(err));
}
}