赞
踩
RxJava的 defer 操作符作以确保Observable代码在被订阅后才执行,而不是创建后立即执行
@Test public void defer() { Disposable disposable = Observable.defer(new Callable<ObservableSource<?>>() { @Override public ObservableSource<?> call() throws Exception { return getRxJavaCreateExampleData(); } }) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(Schedulers.io()) .subscribe(new Consumer<Object>() { @Override public void accept(Object o) throws Exception { System.out.println("rxJavaDeferExample:" + Thread.currentThread().getName() + " consumer --> " + o.toString()); } }); } public Observable<Integer> getRxJavaCreateExampleData() { return Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer> emitter) { System.out.println("getRxJavaCreateExampleData:" + Thread.currentThread().getName() + " --> " + 1); emitter.onNext(1); System.out.println("getRxJavaCreateExampleData:" + Thread.currentThread().getName() + " --> " + 2); emitter.onNext(2); System.out.println("getRxJavaCreateExampleData:" + Thread.currentThread().getName() + " --> " + 3); emitter.onNext(3); emitter.onComplete(); System.out.println("getRxJavaCreateExampleData:" + Thread.currentThread().getName() + " --> " + 4); emitter.onNext(4); } }); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。