У меня есть этот наблюдатель, и он не работает правильно. Он останавливается при вызове (задержка, 10000), и если я запускаю sagaWatcher с этим генератором, то задержка бесконечна:
function* watch() {
while (true) {
try {
yield call(delay,10000);
yield call(getAllFromServer);
} catch (error) {
yield put(actions.setErrorInStore(error));
}
}
}
function* watchPoll() {
while (true) {
yield take(actionType.WATCH_START);
yield race([
call(watch),
take(actionType.WATCH_PAUSE),
take(actionType.WATCH_STOP)
]);
}
}
export function* sagasNotificationWatcher() {
yield takeLatest(actionType.GET_NOTIFICATIONS, getAllFromServer);
yield takeLatest(actionType.GET_CURRENT_NOTIFICATION, setCurrent);
yield takeEvery(actionType.SET_HIDDEN, setHidden);
yield takeEvery(actionType.HIDE_SINGLE, hideSingleSelected);
yield takeEvery(actionType.SET_READ, setStatus);
yield takeEvery(actionType.SET_UNREAD, setStatus);
yield throttle(1500, actionType.SEARCH_NOTIFICATIONS, getAllFromServer);
yield takeLatest(actionType.SHOW_UNREAD, getAllFromServer);
yield takeEvery(actionType.SET_FILTERS, getAllFromServer);
yield takeEvery(actionType.SET_SEARCH_MODULE, getAllFromServer);
yield call(watchPoll) // if i pass in this call just watch, then this works, but if watchPoll it's stopping on yield call(delay,10000);
}
Я прокомментировал строку в sagasNotificationWatcher, где проблема существует