問題タブ [rx-android]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - BehaviorSubject から最新の値を取得するには?
RxAndroidから最新の値を取得するにはどうすればよいBehaviorSubject
ですか?
背景情報: RxJava を使用して MVVM パターンを実装しています。私のViewModelは、sである「バインド可能なプロパティ」をカプセル化しますBehaviorSubject
。それらをオブザーバブルとして UI 要素にバインドし、インターフェイスが常に更新されるようにします (また、 を使用するおかげでBehaviorSubject
、値を設定した後にサブスクリプションが行われた場合でも更新されます)。
ビジネスロジックのために、プロパティの最新の(実際の)「生の」値にアクセスできるようにしたいと考えています。
それ、どうやったら出来るの?
BehaviorSubject
サブスクライブした人に最新の値を再発行することを考えると、何らかの方法で確実にキャッシュします。
それでもBehaviorSubject.last()
のみを返し、戻り値の型Observable<T>
のメソッドを公開していないようです。T
自分でキャッシュできることはわかっていますが、冗長に感じます。
ゲッターで使い捨てのサブスクリプションを作成して、それで最新の値を取得し、それを呼び出し元のコードに返すこともできると思いますが、これは扱いにくいようです。
手元にもっときれいなものはありますか?
android - SwipeRefreshLayout & RxAndroid subscribeOn(AndroidSchedulers.mainThread()) が機能しない
SwipeRefreshLayoutを使用してプル リフレッシュを処理し、 Retrofitを使用するとObservableが返されてデータが取得されますが、Observable.subscribeOn(AndroidSchedulers.mainThread()) が機能しません。
ログ: false
私のコードは間違っていますか?
android - Retrofit + RxAndroid: 遅いリクエストは他のリクエストをブロックします
バックエンドからの返信が遅いことが原因で、問題に直面しています。実際、Retrofit + RxAndroid を使用してサーバーと通信していますが、複数のリクエストを実行している場合、一度に実行されるリクエストは 1 つだけのようです。待機中のリクエストをブロックしないように、この制限を増やす方法はありますか?
ありがとうございました。
編集:
長いバックグラウンド プロセスに対して 1 つのリクエストを実行しているとします。
同時に、すぐに応答できるサービスに別の要求を行っています。
私の場合、最初のリクエストは2番目のリクエストの実行をブロックしています..これは私の問題です。両方のリクエストを同時に実行する理由と何ができるか知っていますか?
ありがとう。
android - Observable から要素のインデックスを取得する
私はRxJavaを学び始めています。OnClickListener
を使用してそれぞれに設定したいビューの配列がありますViewObservable.clicks()
。の実装はOnClickListener
、配列内のビューの位置に依存するメソッドを呼び出すだけです (例: populate(viewPositionInTheArray)
)。
緊急の解決策は次のとおりです。
RxJava を使用してこれを行うには、ストリーム チェーンを行う必要があると思います。しかし、エレガントな FRP の方法でどの機能を使用する必要があるのか わかりません。助言がありますか?
ありがとう
retrofit - ロジックに基づく RxJava 再試行
ネットワーク エラーが原因で失敗する可能性のある Retrofit を使用した API 呼び出しがあります。失敗した場合は、再試行ボタン付きのエラー メッセージが表示されます。ユーザーが再試行ボタンを押すと、最新の Observable を再試行する必要があります。
可能な解決策:
再試行: オブザーバブルをサブスクライブする前に再試行を使用する必要があり、エラーが発生した場合はすぐに再サブスクライブします。これは望ましくありません。ユーザーが再試行ボタンを押した場合にのみ再サブスクライブする必要があります。
RetryWhen: Observable エラーを発行するまでアイテムを発行し続けます。その後、停止します。ここでも同じ問題があります。ユーザーが決定しない限り、再試行プロセスを開始する必要はありません。
同じ Observable への再サブスクライブ: このソリューションは、Observable アイテムの発行を開始します。これの問題は、キャッシュ オペレーターを使用しているため、1 つの Observable が失敗した場合、失敗したアイテムがキャッシュされ、再度サブスクライブすると、また同じエラー。
一緒に行く他の解決策はありますか?