問題タブ [reactivex]
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.
rx-java - 放出されたアイテムを失うことなく Observable を一時停止するにはどうすればよいですか?
私はObservable
毎秒ティックを発する を持っています:
この Observable を一時停止して数値の発行を停止し、必要に応じて再開したいと思います。
いくつかの落とし穴があります:
Observable
Javadoc によると、interval
オペレーターはバックプレッシャーをサポートしていません- backpressure に関するRxJava wiki には、 backpressureのフロー制御の代替手段としての Callstack ブロッキングに関するセクションがあります。
生産性の高い Observable を処理するもう 1 つの方法は、コールスタックをブロックすることです (生産性の高い Observable を管理するスレッドを停止します)。これには、Rx の「リアクティブ」でノンブロッキング モデルに反するという欠点があります。ただし、問題のある Observable が安全にブロックできるスレッド上にある場合、これは実行可能なオプションになる可能性があります。現在、RxJava はこれを容易にするためのオペレーターを公開していません。
interval
Observableを一時停止する方法はありますか? または、バックプレッシャーをサポートする独自の「刻む」Observableを実装する必要がありますか?
rx-java - ReactiveX がタイムアウト後に null またはセンチネル値を発行する
一定期間アイテムを放出しなかった後Observable
、単一の (またはセンチネル値) を放出するようにソースを変換するクリーンな方法を探しています。null
たとえば、ソースオブザーバブルが放出1, 2, 3
し、放出する前に10秒間放出を停止する場合4, 5, 6
、放出されるアイテムを1, 2, 3, null, 4, 5, 6
.
使用例は、表示された値がダッシュに変わる場合、-
またはN/A
最後に発行された値が古い/古い場合に UI に値を表示するためです。
timeout
オペレーターを調べましたObservable
が、タイムアウトが発生すると終了しますが、これは望ましくありません。
RxJava を使用します。
javascript - チェーンされた AJAX 呼び出しから一連の Rx Observables を生成できますか?
技術的背景
Web ブラウザーで jQuery を使用して、ログから一連のエントリを返す API を呼び出しています。
API リクエストは次の 2 つのパラメータを取ります。
offset_timestamp
: 必要な最も早いエントリを指定する整数limit
: 返すレコード数を指定する整数
リクエストとレスポンスの例
単純な jQuery + コールバックを使用していた場合、AJAX 呼び出しを再帰的に連鎖させる必要があると思います。次のようなもの:
flatMap()
当然のことながら、すべてのエントリのシーケンスを取得するために使用できるように、Observable のシーケンス (それぞれがエントリのバッチを 1 つ保持) を使用したいと考えています。
質問
jQuery 呼び出しから Observable を作成する場合、たとえばRx.Observable.fromPromise(jQuery.ajax({...}))
、RxJS を使用してresponse.next_timestamp
、後続の呼び出しのパラメーターで前の呼び出しの値を使用して、これらの Observable を任意の数だけチェーンすることは可能ですか?
android - RxJava は観測可能な onError を再作成します
したがってform
、検証してサーバーに送信するすべてのデータを保持するモデルがあります。できるだけシンプルにしましょう。そうしないとisFormValid
、API リクエストが.Observable.errr(throwable)
onError()
subscriber
submitForm()
さて、ユーザーが無効なデータを入力しonError
たsubscriber
としましょうonComplete
。次に、ユーザーが有効なデータを入力するとsubmitForm()
、再度呼び出されます。
ここに問題があります - 2 番目のsubmitForm()
呼び出しでは何も起こりません! 少なくともflatMap
Func1
2 番目flatMap
Func2
は呼び出されません。なんで?私は何を間違っていますか?それは建築上の欠陥ですか?
java - ラムダ式を使用せずに Java 6 で ReactiveX オブザーバブルを作成する
監視可能なオブジェクト (ReactiveX) を作成する方法の例を見つけました。
しかし、私のプロジェクトはラムダ式の Java 8 をサポートしていません。ラムダ式なしで ReactiveX observable を使用する方法の例が見つかりませんでした。
java - RxJava で 2 つの大規模なデータセットを結合する
ID で結合する必要がある 2 つの大きなデータセット (数百万のレコード) を処理するために RxJava を使用しています。これら 2 つのデータセットには、必ずしも同じレコードが含まれているとは限りません。ただし、それらは ID でソートされます。
そのためにこの方法を使用できることがわかりましたjoin
。以下の実験では「完全結合」を行い、一致するレコードでフィルタリングします。
これは、サンプルの小さなセットでは問題なく機能しますが、大きなセットでは非常に非効率的です。
だから私の質問は次のとおりです:セットがキーでソートされているのを見て、これらのセレクター/ウィンドウ関数を使用して結合を制限できる方法はありますか?
それとも、私はこれを間違った方法で一緒にやっていますか?