失败时取消 ajax 调用序列
Cancel sequence of ajax calls when one fails
在我的商店中有一个包含未决网络请求的队列。
当发出动作 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())));
向上移动实际的 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())))
);
在我的商店中有一个包含未决网络请求的队列。
当发出动作 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())));
向上移动实际的 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())))
);