You can use the all effect, which allows multiple sagas or API calls to run concurrently and wait for all of them to complete.
Let's see to structure a redux-saga for parallel API calls:
import { all, call, put } from 'redux-saga/effects';
import { fetchData1, fetchData2 } from './api';
function* fetchParallelDataSaga() {
try {
const [response1, response2] = yield all([
call(fetchData1),
call(fetchData2)
]);
yield put({ type: 'FETCH_PARALLEL_SUCCESS', payload: { response1, response2 } });
} catch (error) {
yield put({ type: 'FETCH_PARALLEL_FAILURE', error });
}
}