操作符系类终于可以结束了,当然,仅仅知道这些操作符的功能用法还不够,就像是你只知道英语单词的含义,遇到长短句,就不知道是什么意思一样,下周,将总结RxJava的一些常见的应用场景
Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
e.onNext(1);
throw new RuntimeException("error");
}
}).onErrorReturn(new Function, Integer>() {
public Integer apply(@NonNull Throwable throwable) throws Exception {
return 5;
}
}).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:1
Thread:Thread[main,5,main]
onNext:5
Thread:Thread[main,5,main]
onComplete
Thread:Thread[main,5,main]
Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
e.onNext(3);
throw new RuntimeException("error");
}
}).onErrorResumeNext(new Function, ObservableSourceextends Integer>>() {
public ObservableSourceextends Integer> apply(@NonNull Throwable throwable) throws Exception {
return Observable.just(5,6,7);
}
}).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:3
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]
onComplete
Thread:Thread[main,5,main]
Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
e.onNext(3);
throw new RuntimeException("error");
}
}).onExceptionResumeNext(Observable.just(5,6,7)).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:3
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]
onComplete
Thread:Thread[main,5,main]
Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
try {
for (int i = 0; i < 10; i++) {
if (i == 4) {
throw new Exception(
"this is number 4 error!");
}
e.onNext(i);
}
e.onComplete();
} catch (Throwable ex) {
e.onError(ex);
}
}
}).retry(2).subscribe(RxUtils.getObserver());
onSubscribe
Thread:Thread[main,5,main]
onNext:0
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:0
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:0
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]
onError:java.lang.Exception: this is number 4 error!
Thread:Thread[main,5,main]
Observable.create(new ObservableOnSubscribe() {
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
try {
for (int i = 0; i < 10; i++) {
if (i == 4) {
throw new Exception(
"this is number 4 error!");
}
e.onNext(i);
}
e.onComplete();
} catch (Throwable ex) {
e.onError(ex);
}
}
}).retryWhen(new Function, ObservableSource>() {
public ObservableSource apply(@NonNull Observable throwableObservable) throws Exception {
return Observable.just(12,13);
}
}).subscribe(RxUtils.getObserver());
try {
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
onSubscribe
Thread:Thread[main,5,main]
onNext:0
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:0
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]
Process finished with exit code 1