gpt4 book ai didi

javascript - RxJS publishReplay 与 publishLast

转载 作者:数据小太阳 更新时间:2023-10-29 04:28:17 24 4
gpt4 key购买 nike

我正在 Angular 应用程序中实现缓存 HTTP 结果。据我所知,以下两个代码都有效,但我需要知道它们是否在做完全相同的事情,还是我遗漏了一些重要的东西?

最后发布

getPosts() {
if( !this.posts$ ) {
this.posts$ = this.http.get('api').publishLast().refCount();
return this.posts$;
}

return this.posts$;
}

发布重播

getPosts() {
if( !this.posts$ ) {
this.posts$ = this.http.get('api').publishReplay(1).refCount();
return this.posts$;
}

return this.posts$;
}

最佳答案

publishLast 共享(顾名思义)last 发出的值 - 只有在流完成 时才能确定。

publishReplay(1) 共享最新 发射值,这是在任何发射之后完成的。


this.http.get(...) 的情况下,行为是相同的,因为流将在收到结果后完成,因此 lastlatest 值是一回事。

对于发出多个值或在发出该值后没有立即完成的流,您将得到不同的结果。

关于javascript - RxJS publishReplay 与 publishLast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44412070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com