2
我在Angular應用程序中實現緩存HTTP結果。從我所瞭解的以下兩種代碼都適用,但我需要知道他們是否正在做正好是同一件事,或者我錯過了一些重要的東西?RxJS publishReplay vs publishLast
publishLast
getPosts() {
if(!this.posts$) {
this.posts$ = this.http.get('api').publishLast().refCount();
return this.posts$;
}
return this.posts$;
}
publishReplay
getPosts() {
if(!this.posts$) {
this.posts$ = this.http.get('api').publishReplay(1).refCount();
return this.posts$;
}
return this.posts$;
}
但是錯誤呢?當HTTP服務發出錯誤時,它不會調用完成。 – undefined
是正確的,但在這種情況下,在兩種情況下都不會發生排放 - 您只會遇到錯誤 - 我還建議您不要直接發佈http請求 - 您應該訂閱它,然後將數據發佈到永久'ReplaySubject'(或'BehaviorSubject')如果請求成功或者在中心位置處理錯誤(如果它不成功)。 – olsn