Javascript 没有订户时,如何暂停shareReplay
例如: const s=rxjs.interval(2000).pipe(点击(console.log),shareReplay(1)) 常量b=s.subscribe(v=>{}) //等等,控制台将开始输出0,1,2,3。。。 b、 退订 //控制台将继续输出4,5,6,7。。。 我希望在没有订阅服务器时暂停流以节省CPU使用量 没有订户时,如何暂停流 目标是让多个订阅者共享一个流Javascript 没有订户时,如何暂停shareReplay,javascript,rxjs,observable,Javascript,Rxjs,Observable,例如: const s=rxjs.interval(2000).pipe(点击(console.log),shareReplay(1)) 常量b=s.subscribe(v=>{}) //等等,控制台将开始输出0,1,2,3。。。 b、 退订 //控制台将继续输出4,5,6,7。。。 我希望在没有订阅服务器时暂停流以节省CPU使用量 没有订户时,如何暂停流 目标是让多个订阅者共享一个流 当第一个订户到来时,流将以初始值开始,并定期提供数据 当新订户到来时,它将获得流中最近的值 当所有用户都离
- 当第一个订户到来时,流将以初始值开始,并定期提供数据
- 当新订户到来时,它将获得流中最近的值
- 当所有用户都离开时,数据流可以安全地关闭,下一个用户将被视为第一个用户
多播
来通过ReplaySubject
共享您的数据,并使用refCount
来跟踪订户数量
const s=rxjs.interval(2000).pipe(
点击(console.log),
多播(()=>新的ReplaySubject(1)),
refCount()
);
常量b=s.subscribe(v=>{})
设置超时(()=>{
b、 退订
}, 5000)
您有什么RxJS版本?看起来refCount
就是您要找的。它工作得非常好。但是如果新订阅者是由refCount
处理的,那么当新订阅者到来时,ReplaySubject
怎么能立即响应呢。@臧明杰,正如你所说,ReplaySubject(1)
会将其最新的1
值推送给所有订阅者。而refCount
负责为每个“订阅会话”共享相同的ReplaySubject
。简单地说,每次所有订户取消订阅时,它都会重置为一个新的ReplaySubject
。您可以从RxJS核心成员文章中了解更多关于多播的信息:@AlexanderPoshtaruk,如果您愿意推广某个内容,它至少应该涵盖特定的问题。链接“medium/cartant”与链接“github/rxjs”几乎相同。首先我们应该关心给出答案,晋升应该是次要的。