间隔 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
我已经开始在 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