RxJava - Mise en mémoire tampon
L'opérateur de mise en mémoire tampon permet de regrouper les éléments émis par un observable dans une liste ou des bundles et d'émettre ces bundles au lieu d'éléments. Dans l'exemple ci-dessous, nous avons créé un Observable pour émettre 9 éléments et en utilisant la mise en mémoire tampon, 3 éléments seront émis ensemble.
Exemple de mise en mémoire tampon
Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans, par exemple, C: \> RxJava.
ObservableTester.java
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class ObservableTester {
public static void main(String[] args) throws InterruptedException {
Observable<Integer> observable = Observable.just(1, 2, 3, 4,
5, 6, 7, 8, 9);
observable.subscribeOn(Schedulers.io())
.delay(2, TimeUnit.SECONDS, Schedulers.io())
.buffer(3)
.subscribe(new Observer<List<Integer>>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println("Subscribed");
}
@Override
public void onNext(List<Integer> integers) {
System.out.println("onNext: ");
for (Integer value : integers) {
System.out.println(value);
}
}
@Override
public void onError(Throwable e) {
System.out.println("Error");
}
@Override
public void onComplete() {
System.out.println("Done! ");
}
});
Thread.sleep(3000);
}
}
Vérifiez le résultat
Compilez la classe en utilisant javac compilateur comme suit -
C:\RxJava>javac ObservableTester.java
Exécutez maintenant l'ObservableTester comme suit -
C:\RxJava>java ObservableTester
Il devrait produire la sortie suivante -
Subscribed
onNext:
1
2
3
onNext:
4
5
6
onNext:
7
8
9
Done!