問題タブ [angular2-observables]

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 投票する
2 に答える
5604 参照

angular - Angular2 : concat() で http リクエストをチェーンする

複数の HTTP リクエストをチェーンするのが困難です。

まず、コールド Observable を返すこのサービス メソッドでリクエストが定義されます。

FormPartService

ダーティかどうかに応じて送信するフォーム パーツの数が可変なので、これらのフォームで満たされた配列を反復処理します。各呼び出しは、前の呼び出しの戻り値に依存しません。最終的に必要なのは、最後の呼び出しの後に返されるものだけです

これを行うために、concat()よりも私の場合により適していると思われる演算子を試しましたswitchMap()。これが私の試みです:

成分

残念ながら、うまくいきません。ステップごとにデバッグすると、すべてがうまくいき、stream$オブザーバーで設定しましたstream$.concat()が、壊れません。しかし、ネットワークで得られるのは最初のリクエストのみであり、チェーンされたものではありません。

私が間違っていることは何ですか?どうもありがとう

編集 コードを Kwintep がリクエスト チェーンを最適化するために提供した例に置き換えました。残念ながら、リクエストは 1 つずつ適切に実行されますが、完了すると次のエラーが発生しますunknown type returned

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

angular - プロミスをオブザーバブルに変換する方法は?

私はイオン2プロジェクトに取り組んでいます。デバイス/電話のすべての連絡先を返すことができます。しかし、一度に 1 つのリクエストを行うため、パフォーマンスが非常に遅いプロミス コードを使用しました。今、私はそのプロミス コードをオブザーバブルに変更したいと考えています。これを解決するのを手伝ってください。

Contacts.find()私が約束を使用した方法です。そして、このメソッドは連絡先を非常にゆっくりと返します。

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

angular - Angular 2 observable 応答を抽出するにはどうすればよいですか?

ファイルからデータを読み込みます。重要なビットはgetDefaultEquipment().

最後の console.log(this.data) が表示された場合、データは正しく、まさに私が必要としているものです。しかし、私return this.http.get(... () => {return this.data})が未定義になった場合。this.data を取得して返すにはどうすればよいですか??

明らかに、次のような別のリターンを記述した場合、オブザーバブルはまだ完了していないため、空のデータが返されます: any.

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

angular - 非コンポーネント クラスでサブスクリプションを処理する Angular2

Angular2 でのサブスクリプションの処理について高度な質問があります。最近、サブスクリプションの処理が適切に解除されていないために、コードでメモリ リークが発生する可能性があるという記事をよく読みました。

@Components の簡単な解決策は、周囲のすべてのサブスクリプションを満たし、ngOnDestroy ライフサイクル イベントでそれらを処理することです。

ただし、@Component の一部ではなく、サブスクリプションを持っているコントローラーの場合、適切にサブスクライブを解除するための最良の方法は何ですか? 現在、コントローラーにサブスクリプションまたは独自の onDestroy メソッドのいずれかを公開させることを考えていますが、これは簡単に/一般的に実行できるとは思えないので、他のオプション/意見を聞きたいです.

ありがとう!

編集:これはサービスの問題ではなく、コントローラーの問題であることを明確にします。

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

javascript - RxJS5 オペレーターは .combineLatest に似ていますが、単一のオブザーバブルが発行されるたびに起動します

複数のオブザーバブルをスカラー値のフラットなタプルに結合する方法を探しています-同様.combineLatest()ですが、ソースオブザーバブルの1つで値が発行されていない場合でも新しい値のタプルを発行する必要があることを除いて-yielung "undefined " まだ発行されていないオブザーバブルのタプル。

例:

0 投票する
4 に答える
39849 参照

angular - Angular2 でネストされた Observable 呼び出しを行う方法

ネストされた Observable 呼び出しを行う際に問題が発生しています。つまり、ユーザーを取得する http サービスへの呼び出しを意味し、ユーザーから ID を取得して別の http 呼び出しを行い、最後に結果を画面に表示します。

1) HTTP GET 1 : ユーザーを取得する

2) HTTP GET 2: パラメータとして一意の識別子を渡して、ユーザーの設定を取得します

これは、 component 内の次のコードに変換されますBlah.ts

バージョン 1 - このコードは何も表示しません

バージョン 2 - このコードは機能しますが、私には間違ったアプローチのようです:

そして、これはテンプレートです:

http get()次のような呼び出しを行うだけのサービスを表示しても意味がないと思います。

Observable のチェーンを定義するための最適な方法を提案してください。

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

angular - angular2イベントを監視可能なオブジェクトにバインドします

キーアップイベントとオブザーバブルオブジェクトをバインドしようとしています。テキストボックスフィールドでキーを押すたびに、コンソールに「あなたが押した:」+キー文字列を記録したいのですが、エラーは表示されませんが、キーを押しても何も起こりません。 .

なぜ機能しないのですか?

編集:

マップ関数内のデバッガポイントに到達できません..イベントが適切にバインドされていないように見えます..しかし、なぜですか?

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

angular - 1 つの Observable で複数の debounceTime を使用するにはどうすればよいですか?

入力 html 要素があり、Observables を使用して基本的な型先行検索機能を実行しています。

コード:

したがって、基本的には、各キーアップの間に少なくとも 200 ミリ秒で入力されたキーワードをキャプチャしています。

「最新の検索」を表示するために、ユーザーが検索しているものをすべて Cookie に保存したいのですが、入力した値を保存する前に 3000 ミリ秒待ちたいと思います。

次のコードが機能しないことはわかっていますが、説明のために、これに似たものを実現したいと考えています。

これはどういうわけか、オペレーターを連鎖させて異なる debounceTimes で複数のことを行うことは可能ですか?