Un collègue et moi avons ajouté un flux de type "redux-observable" à notre application android et n'arrivons pas à comprendre comment créer une épopée qui cesse de recevoir des actions jusqu'à la fin du premier appel.Epic qui ignore l'action jusqu'à la fin de la première requête
A l'origine, je pensais que nous pouvions utiliser skipUntil()
mais nous nous sommes rendu compte que le résultat de skipUntil()
était avalé et ne passait jamais au reste de la chaîne. Ci-dessous, un code JS approximatif montrant ce que nous espérons accomplir.
const fetchUserEpic = action$ =>
action$.ofType(FETCH_USER)
.skipUntil(/* first request completes */)
.mergeMap(action =>
ajax.getJSON(`/api/users/${action.payload}`)
.map(response => fetchUserFulfilled(response))
.takeUntil(action$.ofType(FETCH_USER_CANCELLED))
);
Il est presque comme je l'ai besoin d'un opérateur skipMap()
qui agit comme switchMap()
mais les honneurs qu'une seule demande à la fois, tout en ignorant tous les éléments si une observable est en cours.
Merci pour vos suggestions.
Merci. Je vais essayer. Le cas d'utilisation auquel nous pensons est celui où l'utilisateur clique rapidement sur un bouton de soumission ou tente d'actualiser les données avant que la réponse d'origine ait une chance de revenir. – jachenry
Peut-être désactiver le bouton Soumettre alors que la requête est en vol est une option meilleure/plus sûre (basé sur l'état, défini dans FETCH_USER, réinitialisé dans FETCH_FULLFILLED/ANNULÉ) – Gluck