簡體   English   中英

遵循Observable的RxJava鏈調用<Void>

[英]RxJava chain calls that follow an Observable<Void>

我一直在包裝一個同步庫,所以執行IO的每個方法都返回一個Observable 但是,其中一些方法返回Observable<Void>因為我只關心它的完成。

在沒有發出任何東西的Observable之后,如何鏈接調用?

accountManager.doAuth()
            .flatMap(x -> paginator.next())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(... subscriber stuff ...)

我必須為每個請求調用doAuth ,並且它返回Observable<Void> 由於它不發出項目, onNext永遠不會調用onNext ,而只會調用onCompleted

關於doAuth我只在乎它是否完成或給出錯誤。 如果完成,我希望調用paginator.next() ,以便可以在onCompleted/onError/onNext實現自己的邏輯。

到目前為止,我一直在使用flatMap來鏈接調用,當我真正關心先前的Observables返回的內容時,它可以正常工作。

1.1.1版本開始, RxJava具有Completable ,它完全符合您的要求。 代替返回Observable<Void>您可以返回Completable

public Completable doAuth(){
    return Completable.create(subscriber -> {
        //do auth
        if(authOk) subscriber.onCompleted();
        else subscriber.onError(throwable);
    });
}

關於Completable文章:第一部分 ,第二部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM