actionsA
export default {
getData: () => {
type: 'A_GET_DATA',
},
setItems: items => {
type: 'A_SET_ITEMS',
payload: items,
}
}
actionsB
export default {
getData: () => {
type: 'B_GET_DATA',
},
setItems: items => {
type: 'B_SET_ITEMS',
payload: items,
}
}
sagaA
function* getData() {
try {
const result = yield call(api.get, requestsUrls.data)
yield put(actionsA.setItems(result))
} catch (error) {
...
}
}
function* sagaA() {
yield takeEvery('A_GET_DATA', getData)
}
sagaB
function* getData() {
try {
const result = yield call(api.get, requestsUrls.data)
yield put(actionsB.setItems(result))
} catch (error) {
...
}
}
function* sagaB() {
yield takeEvery('B_GET_DATA', getData)
}
actionsMain
export default {
init: () => {
type: 'MAIN_INIT',
},
initSuccess: () => {
type: 'MAIN_INIT_SUCCESS',
}
}
sagaMain
function* init() {
try {
yield put(actionsA.getData())
yield put(actionsB.getData())
yield put(actionsMain.initSuccess())
} catch (error) {
...
}
}
function* sagaMain() {
yield takeEvery('MAIN_INIT', init)
}
Суть вопроса в том, как сделать, что бы в функции init все выполнялось последовательно, т.е. сейчас
yield put(actionsMain.initSuccess())
выполняется раньше чем
yield put(actionsA.setItems(result))
и
yield put(actionsB.setItems(result))