問題タブ [rxjs-pipeable-operators]
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 - RxJS の「ドット」と「パイプ」の抽象化
RsJ は、次の 4 つの理由から、演算子の抽象化を「ドット」から「パイプ」に移行しました。演算子がシンボルでエイリアス化されていれば、これらの理由も解決されますか? という名前のプロパティ'myOp'
をプロトタイプに追加する代わりに、名前が のようなシンボルだったらどうSymbol('myOp')
でしょうか? 次に、次のように呼び出すことができます
理由を 1 つずつ取り上げます。
patch オペレーターをインポートするライブラリーは、そのライブラリーのすべてのコンシューマーに対して Observable.prototype を拡張し、盲目的な依存関係を作成します。ライブラリがそれらの使用を削除すると、無意識のうちに他のすべての人を壊してしまいます。pipeables では、必要な演算子を使用する各ファイルにインポートする必要があります。
シンボルは、モジュールがロードされたときにのみプロトタイプにアタッチされrequire('myOp')
、シンボルであり削除されないため、衝突しません。
プロトタイプに直接パッチされたオペレーターは、ロールアップや webpack などのツールによって「ツリー シェーク可能」ではありません。パイプ可能な演算子は、モジュールから直接引き出された単なる関数であるためです。
プロトタイプに追加されたシンボルは、必要に応じて 1 つずつインポートされるため、シェイクする必要はありません。シンボルがプロトタイプに存在する場合、それをインポートした人によって使用されています。
アプリにインポートされている未使用の演算子は、ビルド ツールや lint ルールでは確実に検出できません。つまり、スキャンをインポートしても使用を停止しても、まだ出力バンドルに追加されているということです。パイプ可能な演算子を使用していない場合は、lint ルールで取得できます。
読み込まれているが使用されていないシンボルは簡単に検出できます。var MyOp = require('my-op')
andが使用されていない場合MyOp
、リンターはパッケージを削除するように要求する可能性があり、モジュールがロードされないため、op がアタッチされることはありません。
機能構成は素晴らしいです。独自のカスタム オペレータの作成が非常に簡単になり、rxjs の他のすべてのオペレータと同じように機能し、見た目もよくなりました。Observable を拡張したり、lift をオーバーライドしたりする必要はもうありません。
モジュールmy-op
は次のように演算子を宣言します。
angular - v5 のパイプで使用されるマージを v6 に変換するにはどうすればよいですか
ここで利用可能な変換ガイドを見て、このガイドに従ってパイプで使用されるマージを変換しようとしていますが、変更前のようには機能していません。
新しいマージを学習するために使用しているコードは次のとおりです。
私はそのようなことをしようとしました:
しかし、クロムのネットワークタブでは、フォームのステータス(VALIDまたはINVALID)に等しいクエリでAPIへの呼び出しを取得しています。これを変換する適切な方法は何ですか?
angular - 複数のプロパティをAngular 6の配列にマップする方法は?
次のようなオブジェクトの配列があります。
そして、それを以下のようなものにマッピングして使用したいと思いますPlotly
もちろん、上記のパイプを複製して y 値を取得することもできますが、これは別のサブスクリプションになります。これを解決する別の方法はありますか?
typescript - タイプスクリプトメソッドは未定義を返しますか?
こんにちは、Angular 5 アプリケーションがあります。undefined を返すサービス メソッドがあります。これが私がやろうとしていることです。cloneFlight という名前の関数があります。私は値 undefined を返す flightService.getCampaignsToClone(this.flight) を呼び出しています。
getCampaignsToClone のコードは次のとおりです。
getCampaignsToClone で、Observable を返す http 呼び出し CampaignService.getStatuses() を作成しています。次に、それらのいくつかをフィルタリングしてから、別の http 呼び出しである getUnpaginatedCampaigns を呼び出します。メソッドが未定義を返さないように、このコードを記述する最良の方法は何か考えてみてください。おそらくrxjsオペレーターを利用していないと思います。誰かがそれを理解するのを手伝ってくれませんか。
どうもありがとうございます