RxJava中断onNext
我有一个可观测的,能发射长值。一旦我收到一个大于0的长值,那么我只需要中断发射并点击onComplete。有没有更好的方式来做这件事,而不是像我这样的黑客方式RxJava中断onNext,java,rx-java,Java,Rx Java,我有一个可观测的,能发射长值。一旦我收到一个大于0的长值,那么我只需要中断发射并点击onComplete。有没有更好的方式来做这件事,而不是像我这样的黑客方式 long id = -1l; methodA() .subscribeOn(Schedulers.io()) .flatMapObservable(list -> Observable.from(list)) .flatMap(eachObject -> methodB(eachObject))
long id = -1l;
methodA()
.subscribeOn(Schedulers.io())
.flatMapObservable(list -> Observable.from(list))
.flatMap(eachObject -> methodB(eachObject))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Long>() {
@Override
public void onCompleted() {
//some callbacks
}
@Override
public void onError(Throwable e) {
//just say error
}
@Override
public void onNext(Long mId) {
if (id < 0) {
id = mId;
}
}
});
long id=-1l;
方法a()
.subscribeOn(Schedulers.io())
.flatMapObservable(列表->可观察的自(列表))
.flatMap(每个对象->方法B(每个对象))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新订户(){
@凌驾
未完成的公共无效(){
//一些回调
}
@凌驾
公共无效申报人(可丢弃的e){
//说错话
}
@凌驾
下一页(长-中){
if(id<0){
id=中间;
}
}
});
使用
返回一个Observable,只要指定的条件为true,该Observable就会发出源Observable发出的项
参数:
谓词一个函数,该函数计算源可观测项发出的项并返回布尔值
返回:
一种可观察对象,只要每个项满足谓词定义的条件,就从源可观察对象发出项
public Observable<T> takeWhile(final Func1<T, Boolean> predicate)
公共可观察takeWhile(final Func1谓词)
methodA()
.subscribeOn(Schedulers.io())
.flatmap可观察(可观察::来自)
.flatMap(this::methodB)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile(id->id使用
返回一个Observable,只要指定的条件为true,该Observable就会发出源Observable发出的项
参数:
谓词一个函数,该函数计算源可观测项发出的项并返回布尔值
返回:
一种可观察对象,只要每个项满足谓词定义的条件,就从源可观察对象发出项
public Observable<T> takeWhile(final Func1<T, Boolean> predicate)
公共可观察takeWhile(final Func1谓词)
methodA()
.subscribeOn(Schedulers.io())
.flatmap可观察(可观察::来自)
.flatMap(this::methodB)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile(id->id请参阅takeWhile或takeUntil。请参阅takeWhile或takeUntil。