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))