2017-03-02 4 views
0

私のストアには、保留中のネットワーク要求を含むキューがあります。 アクションATTEMPT_FLUSHがエミュレートされている場合は、に続けて、にリクエストを送信します。 しかし、そのうちの1つが失敗してATTEMPT_FLUSH_CANCELLEDを発した場合、次のものは試みられません(次のATTEMPT_FLUSHで再試行するまで)。1つが失敗したときに、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()))) 
    ); 
関連する問題