RxJava - Pencereleme
Pencereleme operatörü, tampon operatörüne benzer şekilde çalışır, ancak bir Gözlemlenebilir tarafından yayılan öğeleri toplama yerine başka bir gözlemlenebilirde toplamaya ve koleksiyonlar yerine bu Gözlemlenebilir Öğeleri yaymaya izin verir. Aşağıdaki örnekte, 9 öğe yaymak için bir Gözlemlenebilir oluşturduk ve pencere operatörü kullanarak 3 Gözlemlenebilir birlikte yayımlanacak.
Pencereleme Örneği
C: \> RxJava'da seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki Java programını oluşturun.
ObservableTester.java
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
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())
.window(3)
.subscribe(new Observer<Observable<Integer>>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println("Subscribed");
}
@Override
public void onNext(Observable<Integer> integers) {
System.out.println("onNext: ");
integers.subscribe(value -> 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);
}
}
Sonucu Doğrulayın
Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -
C:\RxJava>javac ObservableTester.java
Şimdi ObservableTester'i aşağıdaki gibi çalıştırın -
C:\RxJava>java ObservableTester
Aşağıdaki çıktıyı üretmelidir -
Subscribed
onNext:
1
2
3
onNext:
4
5
6
onNext:
7
8
9
Done!