に加入したとき、私はAPIからいくつかのデータを返すサービスがあります。私のコンポーネントで、私はので、後で使用するために変数に返され、観察を格納したい実行何かのhttp観察できるが
// ...
getMetadata() {
this.spinner.start();
return this.http.get('/api/metadata').finally(() => this.spinner.stop());
}
// ....
をI
// ...
this.metadata$ = this.api.getMetadata();
// ...
をとの私は| async
を使用して、私のテンプレートでは、この観測可能などこかを使用しているとしましょう、しかし、のは、これはすぐには起こらないとしましょう:行きます。 私のスピナーは、サブスクリプションがまったく配置されていない場合でも、とにかく表示されます。
私の質問は、finally
のような最初のサブスクリプション時に関数を呼び出すオブザーバブルを定義する方法ですが、オブザーバブルが最初に(または毎回)サブスクライブされているときに正確に何かを実行するためですに?
ありがとうございます!スピンナーで
getMetadata() {
return Observable.of(this.spinner.start()).
flatMap(()=> this.http.get('/api/metadata')).
finally(() => this.spinner.stop());
}
スタートに観測をして、flatMapにリクエストを送信し、最終的にスピナーを閉じる:
"サブスクリプションが全く配置されていませんでした" ..あなたはそれがエラーになるか、またはリクエストが行かないことを意味しますか? –
いいえ、私はちょうどその上に 'サブスクライブ 'と呼ばれる誰もいないことを意味します。 – Amit
私がちょうどそれを購読せずに観測可能性を「要求」した場合にスピナーを表示するので、観察可能なものを購読していなくてもあまり意味がありません – Amit