间隔 API 调用 Redux-Observable

Interval API calls in Redux-Observable

我已经开始在 React 中使用 redux-observable,我坚持使用间隔 API 请求。

这是我的史诗代码,效果很好,但仅适用于单个请求:

const fetchPointValue = (action$) =>
  action$
    .ofType(actionTypes.REQUEST_POINT_VALUE)
    .mergeMap(action =>
          ajax.getJSON(`${API_SERVER_URL}/point/value/${action.payload.id}`)
            .map(response => receivePointValue(action.payload.id, response))
            .startWith(fetchingPointValue(action.payload.id))
    )

现在,我需要将其修改为间隔 - 如果调用操作 REQUEST_POINT_VALUE,我需要每隔 ~5 秒请求一次值,直到 REQUEST_POINT_CANCEL动作。 可能使用 .takeUntil("REQUEST_POINT_CANCEL").interval(5000) 可以解决我的问题,但我尝试了所有可能的组合,并且仍然无法达到工作版本。

是的,您可以使用 .interval.takeUntill 实现此目的:

action$
  .ofType(actionTypes.REQUEST_POINT_VALUE)
  .mergeMap(action =>
    Observable
      .interval(5000)
      .switchMap(/* make request here */)
      .takeUntil(action$.ofType(actionTypes.REQUEST_POINT_CANCEL))
  )

在此处查看文档和示例 - 3.1 Cancellation