新しいリクエストがトリガーされるたびにユースケースがあり、すでに進行中の http リクエストはキャンセル/無視する必要があります。
例:
- リクエスト #1 の応答に時間がかかりすぎる/ネットワーク接続が遅くなる間に、リクエスト (#2 など) が着信します。
- この場合、#2 はサーバーから非常に迅速な応答を取得し、任意の時点で #1 が応答を返したとしても、観測可能な HTTP 応答は無視する必要があります。
- 私が直面している問題は、最初にコンポーネントがリクエスト#2からの応答値を表示し、リクエスト#1が完了すると再び更新されることです(これは発生しないはずです)。
switchMap はオブザーバブルをキャンセルし、オブザーバブル値が発行される順序を維持すると考えました。
私のservice.tsからの抜粋
Obervable.of('myServiceUrl')
.switchMap(url => this.httpRequest(url) )
.subscribe( response => {
// implementation
/** Update an observable with the
with latest changes from response. this will be
displayed in a component as async */
});
private httpRequest(url) {
return this.httpClient.get('myUrl', { observe: 'response' });
}
上記の実装は機能しません。このユースケースの正しい実装を誰かが理解できますか。