问题:
请提出解决这个问题的最佳方法.
发布于 2018-10-28 22:00:09
RXJS主题有3种不同类型的提要,至少
1) if you miss it you miss it = Subject
2) give me the last value = BehaviorSubject
3) give me all the last values = ReplaySubject听起来你在找3号,对吧?如果是这样的话,就看看ReplaySubjects吧。
Subject -订阅服务器将只获得订阅后发出的已发布值。一个
BehaviorSubject -最后一个值被缓存。订阅者将在初始订阅时获得最新的值。
ReplaySubject -它可以缓存一个特定数量的排放。任何订阅者在订阅时都将获得所有缓存的值。
import * as Rx from "rxjs";
const subject = new Rx.ReplaySubject(2, 100);
// subscriber 1
subject.subscribe((data) => {
console.log('Subscriber A:', data);
});
setInterval(() => subject.next(Math.random()), 200);
// subscriber 2
setTimeout(() => {
subject.subscribe((data) => {
console.log('Subscriber B:', data);
});
}, 1000)我们创建ReplaySubject并指定我们只想存储最后2个值,但不超过100 ms --我们开始每200 ms发送一个主题值。订阅者A将获取此信息,并记录由主题发送的每个值。我们开始订阅订户B,但在1000 ms后就开始订阅。这意味着在我们开始订阅之前,主题已经发出了5个值。当我们创建主题时,我们指定要存储最大2值,但不再存储100 no。这意味着,在1000 ms之后,当订阅者B开始订阅时,当主题每200 ms发出值时,它只会收到1个值。
https://stackoverflow.com/questions/53035833
复制相似问题