問題タブ [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.

0 投票する
1 に答える
488 参照

typescript - 独自のイベントで Observable の forkJoin を使用する方法

イベントを通知するために、私のangular2アプリでreactivexのサブジェクトを使用しています。

私がそのようなことをするとき:

すべて正常に動作しますが、両方のイベントが発生するのを待ってから、いくつかのアクションを実行したいと考えています。Observable.forkJoin を見つけましたが、サブジェクトで動作させることはできません。このようなコードは機能しません

この問題について教えてください。

宜しくお願いします クシシュトフ・シェウチク

0 投票する
4 に答える
3280 参照

angular - オブジェクトを rxjs subscribe() コールバック関数に渡す方法は?

cordova-plugin-network-information を使用して Ionic2 アプリを開発しています。app.ts から接続および切断イベントをサブスクライブしており、NavController への参照と Loading コンポーネントをサブスクライブに渡すことができるようにしたいと考えています。 () コールバックを使用しているため、切断のイベントが発生するたびに、UI の上に Loading オーバーレイをユーザーに表示できます。コールバックで、「this」オブジェクトへの参照が「SafeSubscriber」というオブジェクトに変更されていることがわかります。これは、Observer オブジェクトの rxjs 型付きクラスだと思います。ここでの問題は、それらを取得する方法がないことです。 App オブジェクト自体にアクセスするために、Chrome DevTools を使用して app.ts でこのコードにインスタンスを使用できます。

これが私のコードです:

これは、Chrome DevTools 内で「this」オブジェクトを照会したときに得られるものです (これは、元のコンテキストをラムダ [太い矢印] 関数内に保持することになっていますが、これは正しいですか?)

ここに画像の説明を入力

サブスクリプションを実行する前に「その」オブジェクトを設定しようとしましたが、変数「これ」がコールバックの「この」スコープに干渉しないようにしましたが、このシナリオでは機能しませんでした。「それ」はすぐに宣言されたためですsubscribe() (let that: any = this;) の前は、切断イベントが発生したときにコールバック内で未定義でした。

これは、UI を直接変更するコードを配置するのに最適な場所ではないことはわかっていますが、ここで必要なのは、接続が検出されず、ユーザーがアプリ内の特定のページを表示しています。

これには非常に簡単でエレガントな解決策があるはずですが、見つけられないようです。subscribe() 関数にパラメーターを渡す方法はありますか? 私が必要とする参照を持つある種のオブジェクト?

前もって感謝します。

0 投票する
2 に答える
66 参照

system.reactive - 複数のコンシューマで ReactiveX を再試行する

何かが足りない気がするので、簡単な質問です。ここでrxjsを使用しているのは、目の前にあるものだからです。これは一般的なreactiveXの質問だと思います。

次のようなオブザーバブルのセットがあるとしましょう。

だから、これはうまくいきます。しかし、問題。時々、接続が失敗します。

だから、私がやればうまくevent_stream.retry()いく。失敗すると、ネットワーク呼び出しをやり直し、v新しい接続を確立するために使用する new を取得します。

問題

から 2 つのものを連鎖させたい場合はどうなりnetwork_requestますか? ネットワーク呼び出しが完了するたびに、UI に何かを表示するなど、UI に何かをさせたいのvでしょうか?

できます:

私がしなかった場合share、それは 2 つの要求を作成したことになりますが、これは私が望んでいるものではありませんがshareevent_stream後でエラーが発生した場合、refcount がまだ 1 であるため ( のためui_stream) 、ネットワーク要求を再試行しません。 、したがって、すぐに完了を返します。

私が欲しいもの

これは明らかに、私の混乱を説明するために作成した小さな例です。event_stream私が望むのは、 (その長期接続)の結果にエラーが発生するたびに、次のすべてが発生することです。

  1. ネットワーク要求が再度行われる
  2. そのリクエストの新しい応答は、新しい接続を構築するために使用され、event_stream何も起こらなかったように新しいイベントを続行します
  3. 同じ応答が発行されui_stream、さらに処理が行われます

これは複雑なことのようには感じられないので、RX の分割/ファンアウトに関しては、基本的なことを誤解しているに違いありません。

できると思うが避けたい回避策

私はこれらのオブザーバブルをエクスポートしようとしているので、それらをもう一度ビルドしてから「ねえ、これが新しいものです」と言うことができません。私はevent_stream、すべてのダウンストリーム処理が切断されたことを認識しないようにしたいと考えています。についても同じですui_stream。新たな価値を手に入れたのです。

Subjectおそらく、すべてを再起動するたびに ping を実行する世代カウンターとしてを使用して何かを解決し、それnetwork_requestflatMap基づいて を壊すことができるようにすることができshareます...しかし、それは本当にハックなソリューションのように感じます。だから私はそれよりも良い方法がなければならないと感じています。

私は根本的に何を誤解しましたか?

0 投票する
1 に答える
531 参照

java - RxJava retryWhen および onError

rxJava を使用して開発を開始していますが、次の状況があります。

オブザーバブルがあり、エラーを処理するサブスクライバーと、エラーを処理するonError別のサブスクライバーが必要retryWhenです。

リトライエラーを飲み込むとき、エラー飲み込みを回避するには?

0 投票する
0 に答える
271 参照

java - 自己発光アイテムのリストを出力するための RxJava のベスト プラクティス

RxJava を使用して、Android でリアクティブ UI を構築しています。ユーザーのリストを表示するor があるListViewとします。RecyclerViewいずれかが更新されるたびに、アダプターにアイテムのリスト全体を最新の状態でフィードできるようにしたいと考えています。

これが私の現在のアイデアの実装です:

  1. Observable一部の hot のダウンストリームである for each user を作成しますObservable。そのため、変更があるたびに、ホットによってトリガーされ、Observable最新のユーザー データが発行されます。
  2. Observable.combineLatestユーザーをリストに結合する統合ポイントを作成するために使用します
  3. リストを UI に出力する

私はそれを機能させることができますが、リストに多数のユーザー、つまり1000人のユーザーが含まれている場合、または削除/挿入のためにリストを動的に更新する必要がある場合(したがってcombineLatest、再度呼び出す必要がある場合)、間に顕著な遅延が見られます更新が行われ、最終的にリストが発行されます。

だから私の質問は、そのような自己更新アイテムのリストを実装し、全体として発行するための最良かつ最も効率的な方法は何ですか? または、リストの形式で発行することはまったく想定されていませんか?