に基づいて異なるルートを取ります。ただし、サーバーが検証エラーを返すときに問題が発生します。私はいくつかの異なった理由のためにこのソリューションを好きではないRxJava2シングルは、私は次のコードを持っているアイテム
Observable<Response<User>> observable_from_api =
service.attemptLogin(username, password)
.share();
observable_from_api
.filter(response -> response.code() == HttpStatus.HTTP_STATUS_200_OK)
.//handle logic for success
observable_from_api
.filter(response -> response.code() == HttpStatus.HTTP_STATUS_400_BAD_REQUEST)
.//handle logic for validation errors
:だから、どこか私のストリームでは、私は次のように、私が以前に実装したソリューションである
if(response.code() == 201){
// CONTINUE STREAM USING THE LOGIC THAT HANDLES SUCCESS
}elseif(response.code() == 400){
// CONTINUE STREAM USING LOGIC TO HANDLE THE VALIDATION ERRORS
}
と同等のものを持っていると思います。主なものはちょうど正しいとは思わない。 2番目の方法は、.share()メソッドがObservableオブジェクトでのみ使用可能であることです。私のネットワーク操作は1つのレスポンスしか出さないので、代わりにを使いますが、そこでは.share()メソッドは使用できません。
これが重複した質問である場合は、私はいくつかの掘り出し物を行い、私が言及した解決策を見つけただけです。私は最適な解を見たい、あるいはこれが実際に最適解であることを明示的に伝えたい。
することもできますSingle.error(yourException)、へエラーダウンストリームを伝搬する。 – elmorabea
これもオプションですが、サブスクライバ内のすべての 'handleError'ロジックを移動する必要があります – GVillani82