Redux Saga. Watcher не работает правильно. В чем может быть проблема? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть этот наблюдатель, и он не работает правильно. Он останавливается при вызове (задержка, 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, где проблема существует

...