0
私はさらに私が終わった方法は以下の通りです、私のAPIが観察返したようネットワーク等をチェックし、表示/非ローダーを表示することができます別の方法で改造API呼び出しをラップしたい:RxJavaで観測可能なものを別の観測可能なものにする方法は?
private <T> Observable<T> request(final Observable<T> apiCall, final ViewManager viewManager) {
return Observable.create(new Action1<Emitter<T>>() {
@Override
public void call(final Emitter<T> emitter) {
if (!NetworkUtils.isConnected(context)) {
emitter.onError(new ConnectException("network not connected"));
return;
}
viewManager.showLoader();
apiCall.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<T>() {
@Override
public void onCompleted() {
viewManager.hideLoader();
emitter.onCompleted();
}
@Override
public void onError(Throwable e) {
viewManager.hideLoader();
emitter.onError(e);
}
@Override
public void onNext(T response) {
emitter.onNext(response);
}
});
}
}, Emitter.BackpressureMode.BUFFER);
}
は、このAです問題に対処する標準的な方法?他の観測対象の中に観測対象をどのようにラップしますか?誰もガイドできますか?
あなたの答えをありがとう。しかし、もし私がcompose()を使わずにプレゼンターにそのオブザーバブルを購読すればどうでしょうか?私はViewManagerのための余分なパラメータが必要になります。私はあなたが構成が必要な理由を理解していませんでした – agile1
私は言ったように、私は言ったように、同じ効果が適用されます(同じ署名を持っている)あなたのメソッドコンテンツを私の提案されたコンテンツで置き換えることもできます、それは方法で鎖を '壊す'ではないので、ここで読むことができますhttp://blog.danlew.net/2015/03/02/dont-break-the-chain/ – yosriz
またはあなたはKotlinを使用することができますObservableの拡張関数としてその関数を作成します。 –