作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 BehaviorSubject
我想重置 - 我的意思是我希望最新的值不可用,就像它刚刚创建一样。
我似乎没有看到可以执行此操作的 API,但我想还有另一种方法可以实现相同的结果吗?
我想要的行为是我需要发出事件,并且我希望订阅者在订阅时获取最新事件 - 如果特定管理器处于“启动”状态。但是当这个管理器被“停止”时,最新的事件不应该可用(就像它从来没有开始一样)。
最佳答案
我假设您想清除 BehaviorSubject
(因为否则不要在上面调用 onComplete
)。这不受支持,但您可以通过使用消费者忽略的当前值来实现类似的效果:
public static final Object EMPTY = new Object();
BehaviorSubject<Object> subject = BehaviorSubject.createDefault(EMPTY);
Observable<YourType> obs = subject.filter(v -> v != EMPTY).cast(YourType.class);
obs.subscribe(System.out::println);
// send normal data
subject.onNext(1);
subject.onNext(2);
// clear the subject
subject.onNext(EMPTY);
// this should not print anything
obs.subscribe(System.out::println);
关于stream - 如何重置 BehaviorSubject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45960121/
我是一名优秀的程序员,十分优秀!