したがって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 Func12 番目flatMap Func2は呼び出されません。なんで?私は何を間違っていますか?それは建築上の欠陥ですか?