2017-03-02 16 views
0

在我的商店中有一個包含未決網絡請求的隊列。 當動作ATTEMPT_FLUSH已啓動時,我想按順序發送請求。 但是,如果其中一個失敗併發出ATTEMPT_FLUSH_CANCELLED,則不應嘗試下一個(當然,在我再次嘗試下一個ATTEMPT_FLUSH時)。當一個失敗時取消ajax調用順序

這裏是我到目前爲止

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

回答

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