作者:zealyw | 来源:互联网 | 2023-02-01 19:53
我正在Angular应用程序中实现缓存HTTP结果.据我所知,下面的代码都有效,但是我需要知道它们是否完全相同,或者我错过了一些重要的东西?
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$;
}
olsn..
16
publishLast
共享(顾名思义)最后一个发射值 - 只能在流完成时确定.
publishReplay(1)
分享最新的发射值,这是在任何发射后完成的.
在this.http.get(...)
行为相同的情况下,因为流将在收到结果后完成,因此最后和最新值是相同的.
但是,对于发出多个值的流或者在发出此值后不立即完成的流,您将得到不同的结果.
1> olsn..:
publishLast
共享(顾名思义)最后一个发射值 - 只能在流完成时确定.
publishReplay(1)
分享最新的发射值,这是在任何发射后完成的.
在this.http.get(...)
行为相同的情况下,因为流将在收到结果后完成,因此最后和最新值是相同的.
但是,对于发出多个值的流或者在发出此值后不立即完成的流,您将得到不同的结果.