[英]RxJava break onNext
我有一個觀察到的發出長值。 一旦我收到一個大於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;
}
}
});
返回一個Observable,只要指定條件為true,該Observable就會發出由源Observable發出的項目。
參數:
謂詞一個函數,該函數評估源Observable發出的項並返回布爾值
返回值:
一個從源Observable發出項目的Observable,只要每個項目都滿足謂詞定義的條件
public Observable<T> takeWhile(final Func1<T, Boolean> predicate)
methodA()
.subscribeOn(Schedulers.io())
.flatMapObservable(Observable::from)
.flatMap(this::methodB)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile(id -> id <= 0)
.subscribe(...);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.