問題タブ [reactive-extensions-js]

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 投票する
4 に答える
2243 参照

rxjs - 空の配列でcombineAllが発行されない

JSBIN サンプル

それぞれ独自の状態ストリームを持つ変更可能な子コンポーネント (POJO オブジェクト) のセットがあります。ユーザーが addChild/removeChild/clearChildren をトリガーするたびに、子状態ストリームの新しいセットが #switchMap で発行されます。ここまでは順調ですね!(そして、RxJS にはとても驚かされました!)

が空の配列でないRx.Observable.from(arrayOfStateStreams).combineAll()限り、良い結果が得られます。arrayOfStateStreams

これはより高いレベルで結合された (最新の) 部分的な状態であるため、空の配列を出力する必要があります。そうしないと、グローバル状態ツリーに、もはや真実ではない古い状態データが含まれます!

のような予約済みトークンを発行できますが['EMPTY-ARRAY-PLACEHOLDER-TOKEN']、それは奇妙です。より良い方法は、最後のインデックスがゴミと見なされるように、常に最後のストリームを配列に追加することです。ただし、コードと状態はまだ混乱しています。の子状態を持つ可能性があるため、使用[null]は OK ではありません'null'

これをうまく解決できる人はいますか?#combineAll の後に空の配列の他の表現がないはずなので、これはサポートできませんか?

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

javascript - RxJs: 一定期間経過後にのみ新しい値

私は ReactiveExtensions を初めて使用し、仕事に就けません。非常に一般的なユースケースだと思います。新しい次の値がなく、一定期間が経過した後にのみ新しい値を受け取りたい。下の例では、この期間は 1 秒です。debounce-operatorはまさに私がやりたいことをしているようです。私はそれを動作させません。

私が取得したいのは、次のコンソール出力のみです。

ドキュメントには 2 番目の引数はオプションであると記載されていますが、私の IDE (Webstorm) では、上記のコードはコンパイルさえしません。jsbin.comで、「 this.durationSelector.callは関数ではありません」というエラーが表示されます (rxjs でスケジューラを適用する方法はまだわかりません)。ドキュメントでは、彼らも数字のみを使用しています。Google で見つけたデバウンスのほとんどの例では、数値のみを使用しています。つまり、このStackoverflow の例です。私の場合、これがうまくいかないのはなぜですか?

ご協力いただきありがとうございます!

PS: rxjs 5.0.0-beta.6 を使用しています。

編集:ここでの回答の助けを借りて、私が望んでいた実際の解決策を見つけました:

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

javascript - クエリが埋め込まれた母集団

次の問題の解き方がわかりません。

オブジェクトタイプがあります:

Observable (Angular2) [Fruit[]] として API 呼び出しから fuits のボックスを取得した後、その "ナビゲーション プロパティ" に別の API 呼び出しを設定して、次のようなオブザーバブルを返すようにします。

RxJでどうすればいいですか?

私は多くの方法を試しました。多くのマッパーがありますが、まだわかりません。Observable.from(..) も使用しましたが、運がありませんでした。

ありがとうございました

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

angular - 複数のオブザーバブルを異なるアクション/操作で組み合わせる

私は Angular2 アプリを構築しているので、Observables と Reactive Extensions 全体に慣れてきました。TypeScript と rxjs を使用しています。

これで、いくつかのオブジェクトの配列のオブザーバブル、または必要に応じてストリームを取得できました。人物オブジェクトとしましょう。今、Person-objects の他の 2 つのストリームがあり、これらを結合して、常に最新のストリームを取得したいと考えています。

people-stream がたとえば 5 人の配列を発行し、その後 personAdded-stream が person を発行する場合、allPeople-stream は 6 の配列を発行します。 personRemoved-stream が人を発行する場合、allPeople-ストリームは、personRemoved-stream によって発行されたばかりのものを除いて、Person-object の配列を発行する必要があります。

この動作を得るためにrxjsに組み込まれた方法はありますか?

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

rxjs - rx.jsでbufferWithCountを使用して最初のアイテムをシードするにはどうすればよいですか?

次のようなことをするとします。

これは以下を返します:

結果が次のようになることを望みます(基本的に、最初の値を強制的に出力します):

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

rxjs - RxJS/ReactiveX 適切なモジュール通信

私はリアクティブ プログラミングにかなり慣れていませんが、すでに恋に落ちています。しかし、脳をそれに切り替えるのはまだ難しいです。「サブジェクトの使用を避ける」、「不純な関数を避ける」、そしてもちろん「命令コードを避ける」などのすべての推奨事項に従うようにしています。

私が達成するのが難しいと感じているのは、一方のモジュールが「アクション」/オブザーバブルを登録でき、もう一方のモジュールがサブスクライブしてそれに反応できる単純なクロスモジュール通信です。単純なメッセージ バスはおそらく機能しますが、これにより、回避しようとしているサブジェクトと命令型のコード スタイルの使用が強制されます。

だからここに私が遊んでいる簡単な出発点があります:

したがって、現在、2 番目のモジュールがサブスクライブすると、「myAction」Observable が「トリガー」されます。そして、実際のシナリオでは、ajax 呼び出しになる可能性があります。「myAction」がmodule1から適切に呼び出されるまで、すべてのサブスクライバーを遅延/待機させる方法はありますか? 繰り返しになりますが、サブジェクトを使用すると簡単に実行できますが、推奨される方法に従って実行しようとしています。