RxJava - Chèo gió
Toán tử Windowing hoạt động tương tự như toán tử bộ đệm nhưng nó cho phép tập hợp các mục do một Observable phát ra vào một Observable khác thay vì tập hợp và phát ra Observable đó thay vì tập hợp. Trong ví dụ dưới đây, chúng tôi đã tạo một Observable để phát ra 9 mục và sử dụng toán tử cửa sổ, 3 Observable sẽ được phát ra cùng nhau.
Ví dụ về gió
Tạo chương trình Java sau đây bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong 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.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);
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau -
C:\RxJava>javac ObservableTester.java
Bây giờ hãy chạy ObservableTester như sau:
C:\RxJava>java ObservableTester
Nó sẽ tạo ra kết quả sau:
Subscribed
onNext:
1
2
3
onNext:
4
5
6
onNext:
7
8
9
Done!