Rxjs 当一个调用失败时取消ajax调用序列

Rxjs 当一个调用失败时取消ajax调用序列,rxjs,rxjs5,redux-observable,Rxjs,Rxjs5,Redux Observable,在“我的商店”中,有一个包含挂起的网络请求的队列。 当执行动作trunt\u FLUSH时,我希望按顺序发送请求。 但是,如果其中一个失败并发出尝试刷新\u取消,则不应尝试下一个(当然,除非我在下一个尝试刷新中重试) 这是我到目前为止所拥有的 export const attemptFlushEpic = (action$, store) => action$ .ofType(ATTEMPT_FLUSH) .mergeMap(() => Observable.fr

在“我的商店”中,有一个包含挂起的网络请求的队列。 当执行动作
trunt\u FLUSH
时,我希望按顺序发送请求。 但是,如果其中一个失败并发出
尝试刷新\u取消
,则不应尝试下一个(当然,除非我在下一个
尝试刷新
中重试)

这是我到目前为止所拥有的

export const attemptFlushEpic = (action$, store) =>
  action$
    .ofType(ATTEMPT_FLUSH)
    .mergeMap(() => Observable.from(store.getState().queue)) // state.queue is an array
    .concatMap(action =>
        Observable.ajax(action.url)
        .map(response => removeFromQueue(action))
        .catch(err => Observable.of(attemptFlushCancelled())));

向上移动实际的ajax调用应该会在失败时取消后续的ajax调用

export const attemptFlushEpic = (action$, store) =>
  action$
    .ofType(ATTEMPT_FLUSH)
    .mergeMap(() => Observable.from(store.getState().queue)
      .concatMap(action => Observable.ajax(action.url)
        .map(response => removeFromQueue(action)))
      .catch(err => Observable.of(attemptFlushCancelled())))
    );

向上移动实际的ajax调用应该会在失败时取消后续的ajax调用

export const attemptFlushEpic = (action$, store) =>
  action$
    .ofType(ATTEMPT_FLUSH)
    .mergeMap(() => Observable.from(store.getState().queue)
      .concatMap(action => Observable.ajax(action.url)
        .map(response => removeFromQueue(action)))
      .catch(err => Observable.of(attemptFlushCancelled())))
    );