【问题标题】:Cancel sequence of ajax calls when one fails失败时取消 ajax 调用序列
【发布时间】:2017-03-02 07:23:28
【问题描述】:

在我的商店中有一个包含待处理网络请求的队列。 当ATTEMPT_FLUSH 动作被触发时,我想按顺序发送请求。 但是,如果其中一个失败并发出ATTEMPT_FLUSH_CANCELLED,则不应尝试下一个(当然,直到我在下一个ATTEMPT_FLUSH 中再次尝试)。

这是我目前所拥有的

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())));

【问题讨论】:

    标签: rxjs rxjs5 redux-observable


    【解决方案1】:

    上移实际的 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())))
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2019-03-31
      • 2016-04-15
      相关资源
      最近更新 更多