Я использую redux-saga & redux для управления асинхронным процессом при реакции, но put & take не работает. Есть идеи почему?
В функции генератора саги я отправляю действие test-action
на put
.
Затем я хочу подождать, пока действие не будет завершено, поэтому я пытаюсь сделать это с помощью take
, но take
не вызывается.
В redux-devtool я могу найти, что test-action
обязательно отправлено.
function* firstActionSaga(){
// dispatch secondAction
yield put(secondAction())
// If secondAction finished, the below line should be called.
yield take("SECOND_ACTION")
console.log("second action finished.")
}
function* rootSaga() {
yield all([
// Wait for firstAction, and start firstActionSaga
yield takeEvery(FIRST_ACTION, firstActionSaga)
])
}
Ожидаемое
- Дождитесь firstAction и запустите firstActionSaga
- Отправка secondAction по
put
- Дождитесь второго действия и сделайте что-нибудь.
Фактический
- Дождитесь firstAction и запустите firstActionSaga
- Отправка secondAction по
put
take
не срабатывает