問題タブ [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 投票する
1 に答える
1353 参照

rxjs - RxJS - toBlocking オペレーター

RxJava には Observable.toBlocking() 演算子があり、オブザーバブルのデータを同期的に取得します。RxJS の同様の演算子が見つかりません。この演算子を使用して、別の関数型プログラミング ライブラリを使用せずに、Rx を使用してコードを改善したいと考えています...

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

javascript - Angular2 RxJS で「Observable_1.Observable.fromEvent は関数ではありません」エラーが発生する

私は AngularJS 2 Beta 0 を使用しており、ウィンドウ オブジェクトのイベントから RxJS Observable を作成しようとしています。サービスでイベントを Observable としてキャプチャするための式を知っていると思います。

問題は、このコードを実行しようとするたびに、「fromEvent」が関数ではないというエラーが表示されることです。

これは、RxJS が Angular 2 のビルドに含まれていないため、正しく処理していないことを暗示しているように思えimportますが、アプリケーションの残りの部分は適切に機能します。これは、RxJS が本来あるべき場所であることを意味します。

サービスへのインポートは次のようになります。

代わりにこれを使用しようとしましたが(コードに適切な変更を加えて)、同じ結果になりました:

Index.html に次の構成があります。

誰かが私が間違っていることを教えてもらえますか?

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

javascript - Observable を待機する RxJS Observable

したがって、サーバーからアクセス トークンを取得するために HTTP ポストを作成するオブザーバブルがあります。同じサーバーへの取得を実行する別のサーバーがありますが、最初のアクセストークンが存在する必要があります。したがって、2 つの異なる場所で両方のオブザーバブルを同時にサブスクライブできるようにしたいと考えていますが、GET オブザーバブルはもちろん POST オブザーバブルを待機する必要があります。別の Observables サブスクライブの完了を監視可能に待機させるにはどうすればよいですか?

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

angular - RxJS: Angular 2 を使用した JavaScript のリアクティブ拡張

Angular 2 が RxJS ライブラリを必要とする理由と、それが Observables および Angular 2 と正確にどのように関連しているかを誰かが説明してくれますか?

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

javascript - ホット、共有、オブザーバブルの「onNext」でスローされたエラーを処理する適切な方法

RxJS バージョン 5 では、次のコードにより、両方のサブスクリプションを 3 回繰り返した後にプロセスが終了します。

ただし、次のハンドラーでスローされたエラーは、単にその特定のサブスクリプションのサブスクライブを解除し、基になるオブザーバブルを終了させないことを理解していました。私の予想される出力は、「1」のサブスクリプションがサブスクライブを解除することですが、間隔は「2」のサブスクリプションに結果を生成し続けます。

この動作により、基になるホット オブザーバブルに複数のサブスクリプションがある可能性があるという問題が発生しますが、これらのサブスクリプションのいずれかで単一の例外がスローされると、基になるオブザーバブルが完全に終了します。

ホット モジュール リロードを使用して開発している場合は特に厄介です。サブスクリプションでプログラミング エラーが発生すると、ページ全体を更新して監視可能なシーケンスを再開する必要があるためです。

各サブスクリプションを try/catch でラップせずに、次のハンドラーで例外をスローして、その 1 つのサブスクリプションを単にサブスクライブ解除し、基になるオブザーバブルを終了しないようにする方法はありますか?

- - - - - - 編集 - - - - - -

「subscribe」によって返されたサブスクリプション オブジェクトで syncErrorThrowable を true に設定することで、探している動作を見つけました。コードベースでこれが true に設定されるのは、「do」演算子を使用するときだけのようです。

このフィールドを利用する必要がありますか? 私はそれを使用するとかなり汚いと感じますが、一方で、「do」演算子が「next」サブスクリプションハンドラーとは異なるエラー処理セマンティクスを持っているのは奇妙です。

このフラグの影響を受ける主要なコード ブロックは次のとおりです: https://github.com/ReactiveX/RxJS/blob/master/src%2FSubscriber.ts#L132

false に設定すると、次のメソッドが呼び出されます: https://github.com/ReactiveX/RxJS/blob/master/src%2FSubscriber.ts#L179

true に設定されている場合は、代わりに次のメソッドが使用されます: https://github.com/ReactiveX/RxJS/blob/master/src%2FSubscriber.ts#L188

違いは、最初のメソッドは例外をコールスタックに再スローするのに対し、2 番目のメソッドはエラーを後続のサブスクリプションに転送することです。

do 演算子はエラーを前方に伝搬するのに、「next」ハンドラーはエラーをバブルバックするのはなぜですか? これは私には奇妙に思えます。

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

javascript - チェーンの後半で変数にアクセスする

以下の例では、ユーザーを取得し、そのユーザーのディレクトリを作成しています。ユーザーが作成されたことを単純にログに記録したい。userチェーンの後半で変数にアクセスする最良の方法は何ですか?

私は次のようなことをしたい:

0 投票する
5 に答える
16034 参照

javascript - RxJs: 間隔が完了するか正しいデータが受信されるまでポーリング

RxJs を使用してブラウザーで次のシナリオを実行するにはどうすればよいですか。

  • 処理のためにデータをキューに送信する
  • ジョブ ID を取得する
  • 結果が得られるまで、または 60 秒が経過するまで、1 秒ごとに別のエンドポイントをポーリングします (その後、失敗します)。

私が思いついた中間ソリューション:

  1. データが到着するかエラーが発生したときにタイマーを停止する中間変数なしの方法はありますか? 私は今、新しいオブザーバブルを導入してから使用することができましたtakeUntil
  2. ここでの使用はflatMap意味的に正しいですか? たぶん、この全体を書き直して、チェーン化しないでflatMapください。
0 投票する
3 に答える
236 参照

javascript - RxJs: flatMapLatest が終了した後、flatMapLatest の前にデータにアクセスする

シナリオ:

  1. ユーザーは、単一のストリームに結合されたフィルターを使用します
  2. フィルタが変更されると、バックエンドへのイベントが発生して「安価な」データが取得されます
  3. 「安価な」データが到着すると、同じパラメーターを持つ別のリクエストが別のエンドポイントに発行され、安価なデータを充実させるために使用される「高価な」データが返されます。リクエストは 1 秒遅らせる必要があり、ユーザーがフィルターを変更しない場合にのみ発生します (それ以外の場合は 1 秒待機する必要があります)。

そして、私は3)中間変数のないオプションに苦労しています。

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

typescript - Array を Observable に変換し、変換を実行して、再び Array として返しますか?

ngOnInit()入れたい「return x」がありObservable、変換を実行して同じ形式で再度返します。

これが作業中のプランカーです: http://plnkr.co/edit/z26799bSy17mAL4P5MiD?p=preview