2 votes

Est-il possible de "sauter" l'exécution pendant qu'une autre application est en cours ?

Je suis un débutant en RxJS, désolé si cela n'a pas de sens.

Le flux temporel actuel se présente comme suit :

REMOVE_USER -----------------------> SUCCESS
---------------GET_DEVICE--->SUCCESS--------

L'objectif de haut niveau est d'éviter d'aller chercher le dispositif lorsque l'utilisateur est supprimé.

Des épopées simplifiées à l'extrême :

const getDeviceEpic = action$ => action$.pipe(
  ofType('GET_DEVICE_REQUEST'),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'GET_DEVICE_SUCCESS' }))
  ))

const removeUser = action$ => action$.pipe(
  ofType('REMOVE_USER_REQUEST'),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'REMOVE_USER_SUCCESS' }))
  )
)

Comment aborder cette question ?

Je ne sais pas si je peux ajouter par exemple takeUntil(removeUserAPICall$) à l'application de l'appareil. Ou peut-être vérifier si REMOVE_USER_REQUEST a été déclenché, puis attendez que REMOVE_USER_SUCCESS pour continuer.

2voto

Kos Points 425

Potentiellement, vous pourriez y parvenir avec fenêtreToggle :

windowToggle

Dans votre cas "on" est REMOVE_USER_SUCCESS y "éteint" est REMOVE_USER_REQUEST .

Nous écouterons donc GET_DEVICE_REQUEST entre REMOVE_USER_SUCCESS y REMOVE_USER_REQUEST .

Notez que nous devrons commencer par ouvrir notre filtre, en ajoutant le préfixe startWith(void 0) vers le flux "on".

Par exemple :

const getDeviceEpic = action$ => action$.pipe(
  ofType('GET_DEVICE_REQUEST'),
  windowToggle(
    action$.pipe(ofType('REMOVE_USER_SUCCESS'), startWith(void 0)),
    ()=>action$.pipe(ofType('REMOVE_USER_REQUEST')
  ),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'GET_DEVICE_SUCCESS' }))
  ))

const removeUser = action$ => action$.pipe(
  ofType('REMOVE_USER_REQUEST'),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'REMOVE_USER_SUCCESS' }))
  )
)

* avertissement : écrit dans un bloc-notes

Pourtant, à mon avis, il n'y a rien de mal à ce qu'un drapeau soit apposé sur le magasin (peut-être pour indiquer l'État).

Pour en savoir plus sur la mise en pause et la mise en sourdine des flux, consultez mon article " Observables pausables en RxJS ".

--

J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X