Comment mettre en œuvre l'opérateur flatMapFirst
qui ressemble à flatMap
, mais ajoute de nouvelles observables seulement si la précédente s'est terminée? Si le précédent fonctionne toujours, il ignore simplement le nouveau observable. Comment l'implémenter dans RxJava 2? Il existe déjà dans bacon - flatMapFirst Et dans le kéfir - flatMapFirst.flatMapFirst: flatMap qui ajoute une nouvelle observable seulement si la précédente s'est terminée
Q
flatMapFirst: flatMap qui ajoute une nouvelle observable seulement si la précédente s'est terminée
1
A
Répondre
3
Vous n'avez pas besoin d'un nouvel opérateur, mais une combinaison de ceux qui existent déjà:
source.onBackpressureLatest().flatMap(function, 1)
FlatMap fonctionnera 1 source intérieure à la fois et onBackpressureLatest gardera tomber les valeurs de source extérieure (à l'exception du dernier) s'il n'y a pas de demande alors que flatMap exécute la source interne 1.
Si vous ne souhaitez pas continuer avec la dernière source disponible, utilisez plutôt onBackpressureDrop
.
Il semble que cela fonctionne avec onBackpressureDrop() au lieu de onBackpressureLatest(). OnBackpressureDrop() est-il correct? –
Je vais corriger cela à onBackpressureDrop(), n'hésitez pas à le corriger si c'est une erreur –
Ils ont une signification sémantique différente: avec 'onBackpressureDrop' vous pouvez avoir un trou dans le traitement si la source a fait une pause pour une raison après une éclater. – akarnokd