Skip to content

Instantly share code, notes, and snippets.

@dminuoso
Created April 20, 2017 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dminuoso/605bc2a2970b850a2e727f38333f5075 to your computer and use it in GitHub Desktop.
Save dminuoso/605bc2a2970b850a2e727f38333f5075 to your computer and use it in GitHub Desktop.
export const searchWatchStart = (searchConstants, selectSearch, apiFn, handleError) => {
const searchCreators = createRequestCreators(searchConstants.FETCH_STATUS);
const loadResults = fetchEntity.bind(null, searchCreators, apiFn, { handleError });
const selectMask = makeSelectMask(selectSearch);
return function* () { // eslint-disable-line func-names
let lastTask;
for (;;) {
const { wait } = yield take(searchConstants.START_SEARCH);
if (lastTask) {
yield cancel(lastTask);
}
const searchMask = yield select(selectMask);
lastTask = yield fork(function* () { // eslint-disable-line func-names
if (wait) {
yield call(delay, wait);
}
yield call(loadResults, searchMask);
});
}
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment