redux-saga
Version:
Saga middleware for Redux to handle Side Effects
28 lines (24 loc) • 899 B
JavaScript
import fsmIterator, { qEnd, safeName } from './fsmIterator';
import { take, fork } from '../io';
import { END } from '../channel';
export default function takeEvery(patternOrChannel, worker) {
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
var yTake = { done: false, value: take(patternOrChannel) };
var yFork = function yFork(ac) {
return { done: false, value: fork.apply(undefined, [worker].concat(args, [ac])) };
};
var action = void 0,
setAction = function setAction(ac) {
return action = ac;
};
return fsmIterator({
q1: function q1() {
return ['q2', yTake, setAction];
},
q2: function q2() {
return action === END ? [qEnd] : ['q1', yFork(action)];
}
}, 'q1', 'takeEvery(' + safeName(patternOrChannel) + ', ' + worker.name + ')');
}