Defer操作符的作用
Defer操作符接受一个可观察对象的工厂作为参数,工厂会为每个订阅的观察者生成一个Observable。对于观察者来说,订阅的Observable对象的特性完全取决于工厂内部的逻辑。
在某些场景下,等待持续到最后时刻才发生订阅,这样生成Observable可以确保数据是最新的。
示例代码
RxJava版本:2.2.19
Observable.defer(new Callable<ObservableSource<String>>() {
@Override
public ObservableSource<String> call() {
//每次被订阅时在此处生成Observable
return null;
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {}
@Override
public void onNext(String s) {}
@Override
public void onError(Throwable e) {}
@Override
public void onComplete() {}
});