問題タブ [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.
rxjs - 別のオブザーバブルの値を使用してオブザーバブルをフィルタリングする
私は2つのオブザーバブルを持っています:
- チェックボックス入力のリストを表すオブザーバブル。
- サーバーからのイベントのストリームを表すオブザーバブル。
最初のオブザーバブルの値を使用して、2 番目のオブザーバブルをフィルター処理したいと思います。
サーバーから受信したtag
値には、チェックボックス リストの値に対応するプロパティが含まれます。上記の 2 つの組み合わせから得られたオブザーバブルはtag
、チェックボックスのセットにプロパティが含まれているサーバーからの値のみを生成します。
javascript - rx.js構造によるオブジェクトの等価性のテスト
JS オブジェクトを発行するオブザーバブルがあり、テストで、私が行ったオブザーバブル変換が正しい JS オブジェクトを生成することをアサートしたいと考えています。問題は、rx.js が使用しているアサーションの種類を理解していないことです。失敗するはずのテストが合格しているためです。
たとえば、サンプル ディレクトリのテストに基づいてこのテストを失敗させたいのですが、失敗しません。{ prop: 42 }
生成された値はであり、期待される値は であることに注意してください{ prop: 43 }
。
誰が問題を知っていますか?どうすれば回避できますか? JavaScript でのオブジェクトの等価性は理解できましたが、それは次のステップです。上記のテストから、rx.js が参照の等価性も構造の等価性も使用していないことは明らかです。
javascript - rxjsを使用したマルチタッチロングプレスイベントの検出
rxjsで遊んでいます。とても良いと思いますが、理解するのに本当に時間がかかりました。これは私が解決できない小さなものなので、洞察を探しています。
touchstart/touchmove/touchend ごとに {id:, x:x, y:y, t:t, current_pointers: } を持つオブジェクトをパラメーターとして持つマルチタッチ インターフェイスを考えてみましょう。
そのポインターに対して touchmove または touchup が発生しない限り、1500 ミリ秒後に各ダウンポインターのイベントをトリガーするオブザーバブルが必要です。
ワンタッチの場合は簡単です。takeUntil touch move または touchup だけですが、ポインターの id がチェーン内の最初のオブザーバブル内にある場合、どのように takeUntil を使用しますか?
javascript - リアクティブ フレームワークでのウィンドウ/バッファのスライディング
追加のイベントを受信すると長くなる入力イベントの可変長ウィンドウ/バッファーを作成したいと考えています。
これは、「入力と同時に検索」機能を実装するためです。クリックをキャプチャしたいのですが、サーバーに負荷をかけないように、サービスコールは慎重に行いたいと考えています。
私が念頭に置いているロジックは、最初のキーダウンから始まり、キーアップ + 1 秒の遅延まで、キーストロークをバッファリングすることです。したがって、ユーザーがまだ入力している場合 (つまり、1 秒未満の頻度でキーボードを叩いている場合)、バックサイド サービスは呼び出されません。ただし、入力を 1 秒間停止すると、呼び出しが行われます。
rxjs - Rx.Observable.returnValue しばらくして値を返す方法は?
Rx.Observable.returnValue には、2 番目のパラメーターとしてスケジューラーがあります。しばらくして値を返すと思ったのは、このようになるはずです
しかし、2番目のパラメータはちょうどあるべきでありRx.Scheduler.timeout
、すべてのスケジューラ currentThread、immediate または timeout がすぐに値を返すため、私には意味がありません。
だから私は2つの質問があります:
- しばらくして値を返す方法は?
- でスケジューラ パラメータが必要なのはなぜ
returnValue
ですか?
rxjs - ビジネス イベントの複雑なイベント処理に RxJS を使用する
Web アプリケーションが生成するビジネス イベントのデータベースがあります。
これらのイベント (最大で数百) を受け取る JavaScript アプリケーションを作成したいと考えており、複雑なイベント処理を使用すると、イベント内のいくつかのパターンを見つけることができます。
たとえば、15 分以内にログイン イベントのない login-failure イベントが発生した場合、それについて知りたいと考えています。セッション ID を使用してイベント間を関連付けます。
RxJSが適切なツールであるように思われることから、既存のライブラリを使用することを好みます。
私の質問は、現在のコンピューター時間ではなく、元のイベントのタイムスタンプを使用してイベントのストリームを構築する方法ですか?
RxJS には時間の演算子があることがわかりましたが、現在の時間を使用しているようです。
更新 1良い指示のように見えるHistoricalScheduler
クラスを
見つけましたが、それに関するドキュメントはなく、RxJS に存在するかどうかもわかりません。
javascript - 観測可能なストリームでハイパス フィルターを使用してシェイク イベントを検出できますか?
具体的には、rxjs が提供できるデバイス上の x/y/z 加速度を表すイベントのストリームがある場合、サンプルのより長いスライディング ウィンドウを利用するために、このアルゴリズムのハイパス フィルターをストリーミング方式で実装するにはどうすればよいでしょうか。揺れ検出?
Shake.js のアプローチは有望ですが、2 つの連続したサンプルのみに基づいており、2 つのサンプルはシグナル ストリームの作成ではありません。
ユーザー入力データをストリーミングする際に、オーディオ/音楽作業から慣れ親しんだ信号処理の概念を使用する方法を一度見せてもらったような気がします。
typescript - TypeScript - 既存の型のインターフェイスを「新規」にすることはできません
私が書いている TypeScript アプリケーションで RxJs 定義を使用しようとしています。定義をインポートしましたが、現在、件名を新しくしようとしています。
ただし、これを試してみると、次のエラーが発生します。
エラー 6 プロパティ 'サブジェクト' は型 '{ の値に存在しません。addProperties(obj: オブジェクト、...ソース: オブジェクト[]): void; addRef(xs: Rx.IObservable, r: { getDisposable(): Rx._IDisposable; }): Rx.IObservable; }; オブザーバー: { create(onNext: (value: any) => void, onError?: (exception: any) => void, onCompleted?: () => void): Rx.IObserver; fromNotifier (ハンドラ: (通知: Rx.INotification) => void): Rx.IObserver; }; }
この型定義を見ると、サブジェクト クラスがインターフェイスとして定義されていることがわかります。
方法が見つからないので、この Subject クラスのインスタンスを作成する方法を教えてください。現在TS 9.1.1を使用しています。私は(): ISubjectがそれを行うかもしれないと思ったが、何の影響もないようだ。
代わりにクラスを定義することをお勧めしますが、基本インターフェイスからすべてのメソッドを実装する必要があるため、IObservable から継承するため、これは巨大になります。