- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经知道了
publish
共享一个订阅并返回一个 ConnectableObservable
(因此我们必须 Connect()
)
Share()
是 publish().refcount()
Replay
后缀非常明显,它返回最后一次发射。
让我们以具有当前和 future 订阅的 Angular HTTP 请求为例:
<p>{{ (person | async)?.id }}</p> //present markup
<p *ngIf=”show”>{{ (person | async)?.userId }}</p> <!-- future markup -->
如果我不想要多个 http
请求,我可以使用:
publishReplay().Connect()
但我也可以使用:shareReplay()
,但我确信这里有一个比另一个使用起来更正确。
问题:
什么时候应该使用 publishReplay
与 shareReplay
?就当前和 future 的 HTTP 请求而言,会有什么不同?
<子>注意为什么没有关于 shareReplay
的文档?
最佳答案
shareReplay() is basically publishReplay().refCount()
绝对不是。
shareReplay
和 publishReplay
(+ 在其上调用 connect
)都会使它后面的 observable 变热。
但是它们之间非常重要的区别是:
shareReplay
:不会停止发送,直到它完成,无论是否不再有订阅。publishReplay
:如果与 refCount
一起使用,将在最后一个订阅者取消订阅后停止恕我直言,这是一个重要信息。
关于javascript - 我什么时候应该使用 `publishReplay` 与 `shareReplay` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47926240/
我正在尝试使用 RxJS 重写包管理器(PM 是 pnpm ,PR 是 here )。 在重写过程中,我使用了很多 .shareReplay(Infinity),有人告诉我这很糟糕(我是响应式(Rea
例如: const s = rxjs.interval(2000).pipe(tap(console.log), shareReplay(1)) const b = s.subscribe(v =>
在下面的代码中,我创建了一个简单的可观察对象,它产生一个值然后完成。然后我分享那个可观察的重播最后一个项目并订阅 3 次。紧随其后的第一次,第二次在产生值(value)之前,第三次在产生值(value
我看过 RxSwift/ShareReplayScope.swift 文件,但有点难以理解。 public func share(replay: Int = 0, scope: SubjectLife
问题在于 startWith 和 shareReplay 结合得不好。 如果您使用 source.startWith(0).shareReplay(1),新订阅将始终以 0 开头,并且 shareRe
我试图找出 RxJs。特别是 ShareReplay 运算符。根据我的理解,如果有两个对 observable 的订阅,那么 observable 应该被执行两次。除非涉及 shareReplay。显
我正在为从 API 检索的某些数据使用缓存,出于逻辑原因,存储的数据仅在有限的时间内有效,因此我正在使用以下内容: someApiData$ = this.getData() .pipe(sh
我不明白什么bufferSize参数意味着什么,它有什么影响。 以下有什么区别? var published = source .shareReplay(); var published =
我使用 shareReplay 只调用一次(像缓存一样)网络服务来检索一些信息: 在我的服务中: getProfile(): Observable { return this.callWS()
我已经知道了 publish 共享一个订阅并返回一个 ConnectableObservable(因此我们必须 Connect()) Share() 是 publish().refcount() Re
我有一个场景,比如我需要在单击文件时获取文件内容。我想用shareReplay()缓存文件内容API,如何实现? fileService.getContent 是一个 API 服务,它将使用 para
在这两个例子中,subject$以完全相同的方式行事? import { BehaviorSubject, Observable } from 'rxjs'; let source: Observab
我已经开始使用 RxJS5,现在发现不再有 shareReplay 方法。 很有可能我经常在 RxJS4 中误用 shareReplay,但现在我正在努力获得我想要的行为,即: 创建一个可观察对象 订
我有一个外部热源在观察者可以订阅之前推送值。订阅后,迟到的观察者应该收到最新的值以及从那时起的每个值。为此,我使用了以下代码(相关行标有“ console.warn('!!!', n)); 这行不通(
export class DataService { private readonly dataSubject: Subject = new Subject(); public readonl
我一直在寻找一种在 Angular 中缓存 HTTP 数据的方法,最后我决定使用 .shareReplay() 来实现它。此外,我想手动清除缓存或每当此 ReplaySubject 过时时清除它,因为
对不起,如果这是一个明显的问题。 我正在关注本教程:https://blog.angular-university.io/angular-jwt-authentication/ 我在教程中创建了服务,
所以我希望能够懒惰地订阅共享数据,而不会在没有人订阅时持续存在。然后如果有人再次订阅,将创建一个新的可观察对象。我会使用一个变量,但如果没有人订阅,我不希望它持续存在(因为如果我使用数组或大于 int
我正在使用 RxJS shareReplay()可观察对象( courses$ )上的运算符,以在其他两个可观察对象( beginnerCourses$ 和 advancedCourses$ )之间共
我创建了一个演示 ( ng-run ),其中有一个调用 Http 请求的按钮。 单击按钮时,我调用此方法: public getData(){ this._jokeService.getData()
我是一名优秀的程序员,十分优秀!