Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RxJava中断onNext_Java_Rx Java - Fatal编程技术网

RxJava中断onNext

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))

我有一个可观测的,能发射长值。一旦我收到一个大于0的长值,那么我只需要中断发射并点击onComplete。有没有更好的方式来做这件事,而不是像我这样的黑客方式

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。