В моем сценарии пользователь может выкупить ваучеры. Пока она не вошла в систему, она все еще может проверить функцию выкупа, чтобы понять, как она работает.Переключение между двумя потоками редукционной саги
У меня 2 потоков, notLoggedInRedeemFlow
для случая, когда она не регистрируется и loggedInRedeemFlow
в случае, если она входит в систему.
я на корневую саге, которая должна начать один поток и остановить другой на основе состояние входа в систему.
Я придумал гонку между одним потоком и действие cancellation
для этого потока.
При запуске приложения notLoggedInRedeemFlow
активен, и это должно закончиться, когда пользователь входит в систему.
Затем loggedInRedeemFlow
запускается и работает до тех пор, пока пользователь не выйдет из системы.
function* redeemFlows() {
while (true) {
const result = yield race({
fake: call(notLoggedInRedeemFlow),
gotAccessToken: take([accountActions.LOGIN_SUCCESS, accountActions.START_SIGNUP_SUCCESS]),
})
yield race({
run: call(loggedInRedeemFlow, result.gotAccessToken.payload.access_token),
logout: take(accountActions.LOGOUT_SUCCESS),
})
}
}
Мои вопросы: если это лучший способ справиться с таким сценарием в редукс-сагах?