何处将超时运算符放在Redux Observable中获取史诗

时间:2018-05-02 17:07:43

标签: reactjs redux rxjs redux-observable

我想在我的获取史诗中加入一个超时运算符,在给定的持续时间后取消api调用。我将把操作符放在下面的代码示例中?我的尝试是否正确?不能像希望的那样工作。

const fetchingEpic = (action$, store) =>
  action$
    .ofType('FETCH_DATA')
    .mergeMap(() =>
      fromPromise(
        axios.post(`/url`, payload)
      )
        .map(response => ({
          type: 'FETCH_DATA_SUCCESS',
          data: response.data
        }))
        .timeout(5000)
        .catch(error =>
          Observable.of({
            type: 'FETCH_DATA_ERROR',
            error
          })
        )
    );

1 个答案:

答案 0 :(得分:2)

基于this tutorial我认为超时必须直接低于fromPromise

const fetchingEpic = (action$, store) =>
  action$
    .ofType('FETCH_DATA')
    .mergeMap(() =>
      fromPromise(
        axios.post(`/url`, payload)
      )
        .timeout(5000)
        .map(response => ({
          type: 'FETCH_DATA_SUCCESS',
          data: response.data
        }))
        .catch(error =>
          Observable.of({
            type: 'FETCH_DATA_ERROR',
            error
          })
        )
    );