在 Redux Observable 获取史诗中将超时运算符放在哪里

Where to put timeout operator in Redux Observable fetching epic

我想在我的提取史诗中放置一个超时运算符,以在给定持续时间后取消 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
          })
        )
    );

基于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
          })
        )
    );