したがってform
、検証してサーバーに送信するすべてのデータを保持するモデルがあります。できるだけシンプルにしましょう。そうしないとisFormValid
、API リクエストが.Observable.errr(throwable)
onError()
subscriber
public void submitForm(Form form){
Observable
.just(form)
.flatMap(form->{
if(isFormValid(form))
return Observable.just(form);
else
return Observable.error(someValidationError);
})
.flatMap(form->{
Request req = new Request(form);
try{
return Observable.just(getResponseFrom(req));
}
catch(ApiException e){
return Observable.error(e)
}
}).subscribe(
new Subscriber<ResponseModel>(){
@Override
public void onComplete(){}
@Override
public void onError(Throwable t){}
@Override
public void onNext(ResponseModel model){}
}
);
}
submitForm()
さて、ユーザーが無効なデータを入力しonError
たsubscriber
としましょうonComplete
。次に、ユーザーが有効なデータを入力するとsubmitForm()
、再度呼び出されます。
ここに問題があります - 2 番目のsubmitForm()
呼び出しでは何も起こりません! 少なくともflatMap
Func1
2 番目flatMap
Func2
は呼び出されません。なんで?私は何を間違っていますか?それは建築上の欠陥ですか?