gpt4 book ai didi

java - PublishSubject 在订阅时触发 onNext

转载 作者:行者123 更新时间:2023-12-01 09:38:32 26 4
gpt4 key购买 nike

我正在尝试使用 RxJava 创建模型的代理,该代理允许其他人订阅模型中的更改。

这是我的代理的简化版本:

class MyModelProxy {
private static MyModelProxy instance;

private MyModel model;
private PublishSubject<MyModel> subject;

private MyModelProxy() {
this.model = // load from cache
this.subject = PublishSubject.create();
}

public static Observable<MyModel> observe() {
if (instance == null) {
instance = new MyModelProxy();
}

return instance.subject;
}

private void modelUpdated() {
this.subject.onNext(this.model);
}
}

系统中只有一个 MyModel 实例,但它可能会随着时间的推移而发生变化,因此我希望能够注册这些更新。
如果我在调用主题的 onNext 之前在从 observe 方法返回的 Observable 上注册,则此代码效果很好。

我想要的行为是,当在此观察者上调用 subscribe 方法时,MyModel 的当前实例将被发送到刚刚订阅的订阅者。

我考虑过扩展 PublishSubject 但它是最终版本,所以我考虑编写自己的版本(主要是通过复制 PublishSubject 中的内容并添加我需要的内容)但后来我发现 SubjectSubscriptionManager 具有包可见性,因此这也是一个死胡同。

有什么想法可以添加这个所需的功能吗?
谢谢。

最佳答案

还有 BehaviorSubject,它完全可以满足您的需求:向其订阅者发送最近的和所有 future 的项目

关于java - PublishSubject 在订阅时触发 onNext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38633617/

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