如何在史诗功能[redux-observable中间件]中的ajax请求的retryWhen中调度动作

时间:2018-11-05 18:11:14

标签: redux-observable

如何在retryWhen中调度动作并等待结果?据我所知,这是不可能的,那么还有哪些选择呢?我需要调度“ UpdateDependency”操作,因为该操作已由史诗处理,并调度随后的操作来更新状态并触发其他操作。因此,这不像在retryWhen函数内部具有简单的ajax请求一样。

这种情况适用,例如当您需要刷新ID令牌并重试请求时。

我不能直接使用调度,因为不建议直接使用调度。

这是伪代码:

someEpic = () => (
  action$.pipe(
    ofType("InitialAction"),
    mergeMap(action => {
      return ajax(url)
        .retryWhen(error$ => error$.flatMap(error => {
           return of({ type: "UpdateDependency" }) // this one is not working
         }))
    }),
    mergeMap(result => of({ type: "InitialActionSuccessful" }))
    catchError(error => of({ type: "InitialActionErrored" }))
  )
)

updateSomething = () => (
  action$.pipe(
    ofType("UpdateDependency"),
    mergeMap(action => {
      return ajax(url)
    }),
    mergeMap(result => of({ type: "UpdateDependencySuccessful" }))
    catchError(error => of({ type: "UpdateDependencyErrored" }))
  )
)

0 个答案:

没有答案