問題タブ [rxjs]
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.
javascript - Running async tasks in parallel
In RxJS, when you want to run http requests in sequence- you chain them. But I'm not clear on how can I run requests in parallel? I saw in the examples on http://reactive-extensions.github.io/learnrx/ that they use Observable.zip() to run 2 requests in parallel. But how would you run 5 requests in parallel? More specifically, how can I setup so that my function is called:
- when all 5 complete?
- when first complete?
javascript - RxJS (または Reactive Extensions の一般的な) で時間の有効期限をホット オブザーバブルに実装する方法
RxJs で Time Expiry キャッシュを実装したいと思います。「通常の」キャッシュの例を次に示します。
初めてsubscribe
onを呼び出すと、「重作業」が呼び出され、2 秒後に結果が( ) に保存されます。他の後続のonは、保存された結果をすぐに返します (したがって、キャッシュの実装)。 cachedData
cachedData
AsyncSubject
subscribe
cachedData
私が達成したいのcachedData
は、有効な期間内にこれを「スパイス」することです。その時間が経過したら、新しいデータに対して「ヘビーデューティジョブ」を再実行し、これを新しい時間に再度キャッシュします期間など...
望ましい動作:
私は Rx(Js) が初めてで、クールダウンを使用してこのホット オブザーバブルを実装する方法がわかりません。
javascript - BaconJS オブザーバブル zip、サンプル プロパティ マップが失敗する
BaconJS からzipの例を作成しようとしています。しかし、うまくいきません。
c# - この Suspendable 実装 (「Rx Pausable」) で OnCompleted が呼び出されないのはなぜですか?
Ollie Riches のブログ投稿Trying to be more Functional with Rxから抜粋した以下を読み、著者と同じように疑問に思うようになりました: なぜOnCompletedが渡されないのですか? 誰かがここで何が起こっているか教えてもらえますか? おそらく、恥ずかしいほど単純なことでしょうか?
便宜上、コードを少し変更してここに再掲します (ここで彼のコードをリッピングすることが受け入れられない場合は、Ollie に謝罪します)。
記録のために、一時停止したストリームはイベントを蓄積し、一時停止したストリームはイベントをスキップするという区別で、一時停止および停止できるストリームを作成しようと考えていました。特に一時停止ビットに制限または「戦略を保存」することを考えている場合は、予想よりも少し複雑に見え始めました. しかたがない...
<編集:興味深いことに、Pausable のRxJS 実装に気付きました。
angularjs - $createObservableFunction サブスクライバーがオーバーライドされる
$createObservableFunction メソッドを使用してオブザーバブルを作成し、そのオブザーバブルを複数回サブスクライブするとします。最後のサブスクライバーは、他のサブスクライバーをオーバーライドします。
ただし、 rx.Observable.interval() でオブザーバブルを作成し、それを複数回サブスクライブするとします。両方のサブスクライバーが間隔で起動します。
なんで?さらに重要なのは、$createObservableFunction を取得して両方のサブスクライバーを起動するにはどうすればよいかということです。
問題を説明するプランカーの例。http://plnkr.co/edit/kXa2ol?p=preview
javascript - JavaScript での関数型リアクティブ プログラミングは、リスナー参照でより大きな問題を引き起こしますか?
JavaScript では、オブザーバー パターンが頻繁に使用されます。それには 1 つのトリッキーなことがあります。クリーンアップが必要です。通常のアプリケーションでは、次の経験則を使用します。
- 被験者の寿命が観察者よりも短い(または等しい)場合、私はただ行うことができます
subject.on('event', ...)
- 被験者の寿命が観察者よりも長い場合、使用する必要があります
observer.listenTo(subject, 'event', ...)
2 番目のケースでは、listenTo
はオブザーバーのライフサイクルを認識しており、オブザーバーが終了する時間になると自動的にリスナーを削除します。
常にアプリケーションの一部のみがアクティブな現代の SPA (Single Page Application) スタイルでは、これが非常に重要になります。これを、イベント ストリームの最適な候補であり、おそらく長寿命である Web ソケットと組み合わせると、これはさらに重要になります。
FRPでは、時間の経過とともに変化する値を表すイベントストリームのようなものを持っているので、私は(知らず知らずのうちに)多くのリスナーを作成しています。それぞれfilter
、map
およびflatMap
(おそらくリスナーを使用して) 前のストリームに結び付けられた新しいストリームを作成します。
私の考えでは、これらのリスナーをいつどのように削除する必要があるかを判断するのは非常に難しいようです。この問題について最初に考えたのが私だとは想像できませんが、インターネット上でこれについて多くを見つけることができませんでした。
他の言語のいくつかのフレームワークが弱参照を使用しているのを見てきました。JavaScript には弱参照の概念がありません (ここでは WeakMap は使用できません)。あったとしても、ガベージ コレクションがいつ行われるかが不明なので、それは悪い考えのように思えます。
- これは現在のフレームワークでどのように解決されていますか?
- フレームワークはオブジェクトのライフサイクルに結び付いていますか? はいの場合:どのように?
rx-java - RxJsのObservable.expand()に相当するRxJavaは何ですか?
RxJs には、変換関数を使用してシーケンスを再帰的に展開できる Observable.expand というメソッドがあります。
例えば、
すべての整数を出力します
ただし、RxJava でこのメソッドを見つけることができません。同様の目標を達成できるRxJavaの他のメソッドはありますか?
exapand() の詳細な仕様については、https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/expand.mdを参照してください。
javascript - RxJS で非同期に読み込まれた DOM に基づいてストリームを作成する
ajax 呼び出しを介して一連のアイテムをロードします。これが私の最初の DOM です。
AJAX 呼び出しを介して、JSON として返された本をサーバーから読み込み、次の DOM 構造を作成します。
これは、AJAX 呼び出しを実行する方法です。
にサブスクライブするresponseStream
(そして JSON 応答を HTML に変換する) ことで、次のように DOM に追加します。
今、私がしたいのは、<section class="book">
要素のクリック用のストリームをアタッチすることです。要素は、 から返される最初の値でDOMに追加されていますbooksHTMLStream
。これをブロック内に追加できることは知っていますsubscribe
が、これは callback-soup を思い出させます - そして、私は物事を間違った方法で行っているように感じます.
ページの読み込み時に要素がないため、最初にストリームを追加することはできません<section class="book">
。したがって、ストリームは値を起動しません。それで、私が疑問に思っているのは、ストリームにソースを非同期的に追加することが可能かどうか、またはこれが厄介なコールバックのような状況にならないように、私が望むことを達成する良い方法があるかどうかということですか?
乾杯 :-)