Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
try {
//产生结果的间隔时间分别为100、200、300...900毫秒
for (int i = 1; i < 100; i++) {
e.onNext(i);
Thread.sleep(i * 100);
}
e.onComplete();
}catch(Exception ex){
e.onError(ex);
}
}
}).debounce(500, TimeUnit.MILLISECONDS).subscribe(RxUtils.getObserver());
try {
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
运行结果
onSubscribe
Thread:Thread[main,5,main]
onNext:6
Thread:Thread[RxComputationThreadPool-1,5,main]
onNext:7
Thread:Thread[RxComputationThreadPool-1,5,main]
onNext:8
Thread:Thread[RxComputationThreadPool-1,5,main]
onNext:9
Observable.just(1, 2, 1, 1, 2, 3,3,3,5).distinct().subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:1
Thread:Thread[main,5,main]
onNext:2
Thread:Thread[main,5,main]
onNext:3
Thread:Thread[main,5,main]
onNext:5
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable observable= Observable.just(1,2,3,4,5,6).elementAt(2).toObservable();
observable.subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:3
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1, 2, 3, 4, 5).filter(new Predicate() {
public boolean test(@NonNull Integer integer) throws Exception {
return integer>3;
}
}).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:4
Thread:Thread[main,5,main]
onNext:5
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1, 2, 3).first(5).toObservable().subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:1
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1,2,3).ignoreElements().toObservable().subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1, 2, 3).last(5).toObservable().subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:3
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
try {
// 前8个数字产生的时间间隔为1秒,后一个间隔为3秒
for (int i = 1; i < 9; i++) {
e.onNext(i);
Thread.sleep(1000);
}
Thread.sleep(2000);
e.onNext(9);
e.onComplete();
} catch (Exception ex) {
e.onError(ex);
}
}
}).sample(2200, TimeUnit.MILLISECONDS) .subscribe(RxUtils.getObserver());
try {
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
Thread:Thread[main,5,main]
onNext:3
Thread:Thread[RxComputationThreadPool-1,5,main]
onNext:5
Thread:Thread[RxComputationThreadPool-1,5,main]
onNext:7
Thread:Thread[RxComputationThreadPool-1,5,main]
onNext:8
Thread:Thread[RxComputationThreadPool-1,5,main]
onComplete
Observable.just(1,2,3,4,5,6,7,8).skip(3).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:4
Thread:Thread[main,5,main]
onNext:5
Thread:Thread[main,5,main]
onNext:6
Thread:Thread[main,5,main]
onNext:7
Thread:Thread[main,5,main]
onNext:8
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1, 2, 3, 4, 5, 6, 7).skipLast(3).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:1
Thread:Thread[main,5,main]
onNext:2
Thread:Thread[main,5,main]
onNext:3
Thread:Thread[main,5,main]
onNext:4
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1,2,3,4,5,6,7,8).take(3).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:1
Thread:Thread[main,5,main]
onNext:2
Thread:Thread[main,5,main]
onNext:3
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.just(1,2,3,4,5,6,7,8).takeLast(3).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:6
Thread:Thread[main,5,main]
onNext:7
Thread:Thread[main,5,main]
onNext:8
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]