在我的redux传奇中调用两个api异步,我需要从第一个响应获取数据以调用第二个api

时间:2019-03-27 10:23:01

标签: reactjs redux redux-saga

我有这个用例,我需要在redux saga内进行两个api调用。 我需要第一个api的回复,并在第二个api调用中使用它。最后,我需要获取第二个api调用的响应并填充我的reducers数据。 这是在发生一个api调用并将响应发送给我的reducers时的方式。我担心在两个api调用的情况下应该如何处理,因为我的第二个api调用取决于第一个api调用的数据。 我很担心如何在尝试捕获中将事情捆绑起来。

   export function* fetchSportsFanDetailsHandler() {
      try {
       const { authToken, sportsFanId } = yield select(state => ({
        authToken: state.auth.authToken,
        sportsFanId: state.auth.userId
      }));
const sportsFanDetails = yield call(
  fetchSportsFanDetails,
  sportsFanId,
  authToken
);

    const { name, id, mobile, photo, communicationEmail } =  sportsFanDetails;
    yield put({
  type: FETCH_SPORTS_FAN_DETAILS_SUCCESS,
  response: sportsFanDetails
   });
    } catch (err) {
    const { error } = err.response.data;
     yield put({
     type: FETCH_SPORTS_FAN_DETAILS_ERROR,
      error: error.message
      });
    }
}

1 个答案:

答案 0 :(得分:0)

我将其分为两个函数,第一个函数是第一个调用,它带有自己的try / catch和自己的错误操作,并返回请求数据。

然后,我将检查数据,如果不为空,则使用自己的try / catch和错误处理再次调用第二个请求。