問題タブ [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.
system.reactive - 最初に発生したイベントを取得してから 2 秒間イベントを抑制する方法 (RxJS)
RxJS は、重複するボタンのクリックを 2 秒間抑制するのに完全に適合するはずだと思います。ただし、実装に苦労しています。
便宜上、jsFiddle を既に作成しています。CDN が見つからなかったため、Rx を内部に貼り付けただけなので、このフィドルを下にスクロールする必要があります。
system.reactive - ストリーム B が起動するたびにストリーム A の次のイベントを抑制する方法
ストリーム B が発生するたびに、ストリーム A をちょうど 1 つの通知で停止したいと考えています。どちらのストリームもオンラインのままで、完了することはありません。
また
system.reactive - 1つのサブジェクトを使用して、完全に異なるイベントストリームを伝播します
1つのサブジェクトを介してすべての異なるイベントストリームをプロキシする必要があります。
私はこのコードを思いついた:
出力を得ました:
期待される出力:
イベントのbar
場合、それは魅力のように機能します。onNext
エラーが発生するとすぐにonError
関数が呼び出され、イベントストリームが終了します。しかし、私はそれをのために動作させることができませんonComplete
。
完全な通知が発生するたびに、それが呼び出されますが、サブスクライバーハンドラーが呼び出されるRx.Observable.empty()
ことはありません。onComplete
代わりに、onNext
ハンドラーを呼び出します。
rxjs - オブザーバブルの最後の値を公開する
私はホットオブザーバブル(この場合は主題)を持っています:
新しいサブスクリプションが作成されるたびに、最後に生成された値がすぐに発生するという別のオブザーバブルを作成したいと思います。
したがって、擬似コードでは:
これは大まかに私が望んでいることであり、うまくいくようです。ただし、同じことを実現するには、いくつかの組み込みメカニズムが必要だと思います
javascript - RxJS: オブザーバブルと単一オブザーバーの再帰リスト
オブザーバブルの再帰チェーンに問題がありました。
現在バージョン 1.0.10621 の RxJS を使用しており、Rx for jQuery と組み合わせて、最も基本的な Rx 機能が含まれています。
私の問題のシナリオ例を紹介しましょう。特定のキーワードを含むツイート/更新について、 Twitter 検索 API (JSON 応答) をポーリングしています。応答には、フォローアップ要求を生成するために使用する「refresh_url」も含まれます。そのフォローアップ リクエストへの応答には、新しい refresh_url などが含まれます。
Rx.jQuery を使用すると、Twitter 検索 API 呼び出しを監視可能なイベントにすることができます。これにより、onNext が生成されて完了します。私がこれまでに試したことは、onNext ハンドラーに refresh_url を記憶させ、それを onCompleted ハンドラーで使用して、次のリクエスト用に新しいオブザーバブルと対応するオブザーバーの両方を生成することです。このようにして、1 つのオブザーバブル + オブザーバーのペアが、もう一方のペアに無期限に続きます。
このアプローチの問題は次のとおりです。
フォローアップのオブザーバブル/オブザーバーは、前任者がまだ破棄されていないときにすでに生きています。
現在生きているオブザーバーへの有効な参照を維持するために、多くの厄介な簿記を行う必要があります。実際には、そのうちの2つが存在する可能性があります。(1 つは onCompleted にあり、もう 1 つはそのライフサイクルの別の場所にあります) もちろん、この参照は、オブザーバーの購読を解除/破棄するために必要です。簿記の代わりに、私の例で行ったように、「まだ実行中ですか?」ブール値を使用して副作用を実装することです。
コード例:
リクエストからツイートまで、オブザーバブル/オブザーバーの二重層に惑わされないでください。私の例は、主に最初の層、つまり Twitter からのデータの要求に関するものです。この問題を解決するために、2 番目の層 (応答をツイートに変換する) が最初の層と 1 つになることができれば、それは素晴らしいことです。でも、それは全くの別物だと思います。今のところ。
Erik Meijer は私に Expand 演算子を指摘し (以下の例を参照)、代替としてJoin パターンを提案しました。
これは、LINQPad にコピーして貼り付けることができます。シングルトンのオブザーバブルを想定し、最終的なオブザーバーを 1 つ生成します。
だから私の質問は次のとおりです:RxJSで最も優れた展開トリックを行うにはどうすればよいですか?
編集:
展開演算子は、おそらくこのスレッドに示されているように実装できます。しかし、ジェネレーターが必要になります(そして、私は JS < 1.6 しか持っていません)。
残念ながら、RxJS 2.0.20304-betaは Extend メソッドを実装していません。
node.js - RxJS + node.js HTTP サーバーの実装?
RxJS 実装までは node.js に慣れていました。
これが私のトライアルコードの勉強です-
Reactive-Extensions / rxjs-node https://github.com/Reactive-Extensions/rxjs-node
rx_http.js
(node.js の http lib の RxJS ラッパー)
サーバー.js
コードはブラウザへの 1 回限りの「hello world」出力で終了し、RxServer は別のアクセス (ブラウザのリロードなど) への反応を停止します。
私はRxJSのことを学ぶ途中ですが、Web上で見つかったドキュメントはほとんどありません。
コードの何が問題なのか教えてください。より良い実装を知っている場合は、共有してください。ありがとうございました。
javascript - Rx for JavaScript を使用して、時間枠内で特定の dom イベントを観察することは可能ですか?
keyup
Dom イベント ( ) が一定時間内に特定の回数発生した場合に通知を受け取ろうとしています。時間枠内のイベントを破棄するスロットルがあることがわかりました。それらをカウントしたいと思います。たとえば、keyup
イベントが 500 ミリ秒以内にテキスト ボックスに対して 10 回発生した場合にのみ通知を受け取りたいとします。
javascript - Observable.Interval の RxJS 複数サブスクリプション
RxJSの次のような解決策はありますか? Rx の異なるスレッドでサブスクライバーの OnNexts を呼び出すことは可能ですか?
PS私の最初の素朴なアプローチ(CoffeeScriptで)は明らかに失敗しました:
2 番目のサブスクリプションは 35 秒間何も返さない、など
javascript - rx.jsを使用して配列への追加を観察できますか?
subscribe
関数が作成されたときに、関数が1回だけ起動するように見えます。配列の変更を観察するのではなく、配列をそれぞれ処理するためだけに使用しているので、少し誤称のようです。ただし、そのコードはwikiにあるものとほとんど同じです。ですから、私が間違っているか、subscribe
期待どおりに機能しないかのどちらかです。