0

したがって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()さて、ユーザーが無効なデータを入力しonErrorsubscriberとしましょうonComplete。次に、ユーザーが有効なデータを入力するとsubmitForm()、再度呼び出されます。

ここに問題があります - 2 番目のsubmitForm()呼び出しでは何も起こりません! 少なくともflatMap Func12 番目flatMap Func2は呼び出されません。なんで?私は何を間違っていますか?それは建築上の欠陥ですか?

4

0 に答える 0