Skip to content

Conversation

@karalkou
Copy link

No description provided.

* Не понимаю, почему следующие две строчки срабатывают только один раз
* если yield spawn(realtimePeopleSyncSaga)
* */
const {payload} = yield take('@@router/LOCATION_CHANGE')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше использовать {LOCATION_CHANGE} from 'react-router-redux'

/* Вопрос:
* Не понимаю, почему следующие две строчки срабатывают только один раз
* если yield spawn(realtimePeopleSyncSaga)
* */
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну ты ведь каждый раз ждешь изменения роута

Copy link
Author

@karalkou karalkou Nov 13, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

смотри, у меня есть сага realtimePeopleSyncSaga.
Внутри неё я хочу ловить событие смены урла, и использовать возвращаемое yield-ом значение payload:

export const realtimePeopleSyncSaga = function * () {
    const chan = yield call(createPeopleSocket)
        while (true) {
            
            /* вот тут хочу получать данные и реагировать на них */
            const {payload} = yield take(LOCATION_CHANGE)
            console.log('---payload: ', payload);

        }
}

И я её вызываю в главной саге утки:

export function * saga() {
    yield spawn(realtimePeopleSyncSaga)
    // yield spawn(cancelableRealtimePeopleSyncSaga)

    yield all([
        takeEvery(ADD_PERSON_REQUEST, addPersonSaga),
        takeEvery(ADD_EVENT_REQUEST, addEventToPersonSaga)
    ])
}

По идее, теперь при каждом переходе (на админа или события, должно происходить событие смены урла и выводится payload). Событие происходит, но не отрабатывает console!

И вот это я не понимаю.

Задание сделал: через создание ещё одной саги cancelableRealtimeSyncSaga, которую отменяю и в отмененной саге (realtimePeopleSyncSaga) уже отключаю канал в finally.

Но первая мысль была сразу обрабатывать смену урла в realtimePeopleSyncSaga и отключать канал.
И не пойму, почему именно она не работает. Событие смены происходит, а реакции ноль

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants