次々と実行したいRx Completablesのチェーンがあります。私はconcat()
を使用しています。私はそれらをすべて同時に開始したくないからです。観測可能なチェーンを終了してエラーが発生した場合
view.welcome_message_edittext.verifyNotEmpty(getString(R.string.enter_your_email_address))
.concatWith(view.welcome_message_edittext.verifyEmailAddress())
.concatWith(sendMessageToBot())
.subscribe({
// The user has successfully entered data into the edittext, entered an email into the edittext, and sent message to bot.
}, { error -> })
上記のコードは、ユーザーがのEditTextにテキストを入力しました。それが本当であれば、ユーザーはのEditTextに電子メールを入力した主張アサート」、これを言っている。これらの両方に該当する場合は、送信しますメッセージをボットに送ります。 "ユーザーがEditTextにテキストを入力しても電子メールではない場合は、Completableのチェーンが壊れてonError()が呼び出されることが予想されます。
これは私が^^^起こるしたいものです。 Completablesの任意のは、(ユーザーが空のEditTextを離れるか、メールアドレスを入力していない場合verifyNotEmpty()
とverifyEmailAddress()
のようにしてください)onError()
を呼び出すと、私はチェーン全体が終了し.subscribe()
onError()
関数を呼び出すことを期待しています。
しかし、.concat()
このためにドキュメントを見て、それを実際の行動である:onError
が呼び出されたときに
concat()
は、単純に次のCompletable上に移動します。チェーンは続く。
だから私の質問、私はCompletablesのいずれかがonError()
を呼び出すときにチェーンを断ち切るために使用するために何が必要ですか?
私は最後のスクリーンショットのいずれかのエラーイベントが表示されません。エラーイベントには、タイムラインに十字マークが付けられます。だから、私が '' CONCAT()を使用しています@Buckstabueその場合 – Buckstabue
で連結を使用しても大丈夫でなければなりません。上記のコードスニペットは、私のアプリで私の実際のコードスニペットです。コードを実行するときに、EditTextを空白のままにしておくと、 'verifyEmailAddress()'と 'sendMessageToBot()'関数の両方が後で呼び出されます。 'subscribe()'の 'onError()'は呼び出されますが、 'verifyEmailAddress()'は 'verifyEnterEmpty()'が 'onError()'を呼び出した後に呼び出されません。 – levibostian
あなたは何を意味するのか分かりません。すべてのエラーを収集しますか?もしそうなら、mergeDelayError()オペレーターを見てください。 – Buckstabue