Вот пример, который будет легче понять.
function* a() {
yield takeEvery(action.LOGIN_SUCCESS, b)
}
function* b() {
yield takeEvery(action.FETCH_SUCCESS, c)
}
function* c() {
yield console.log('action from function a')
}
function* d() {
yield takeEvery(action.FETCH_SUCCESS, e)
}
function* e() {
yield console.log('action from function d')
}
yield all([
fork(a),
fork(d),
])
Если происходит LOGIN_SUCCESS, то функция b начинает ожидать FETCH_SUCCESS.
В то же время функция d ожидает FETCH_SUCCESS.
Вопрос: как я могу остановить запуск функции d после того, как takeEvery в функции a выполнит действие LOGIN_SUCCESS, а затем действие FETCH_SUCCESS?
В этом случае я хочу, чтобы вызывалась только функция c. Вместо этого происходит то, что и функция c, и функция e вызываются, потому что происходит FETCH_SUCCESS.
Идея состоит в том, что я хотел бы иметь что-то в саге-редукте, которое бы помнило предыдущее действие предыдущего генератора, чтобы я мог различить два разных пути:
1) LOGIN_SUCCESS -> FETCH_SUCCESS -> function c
2) FETCH_SUCCESS -> function e
Надеюсь, я достаточно ясно:)