【发布时间】:2018-02-01 17:08:04
【问题描述】:
目前我正在使用 RxKotlin 在 Kotlin 中构建一个项目。我在 Rx 方面的背景主要是基于 RxJS。
我经常用于在 Typescript 中创建 hot observables 的模式看起来类似于以下内容:
private dataStore: IFoo;
private dataStoreSubject: BehaviorSubject<IFoo> = new BehaviorSubject(this.dataStore);
public dataStoreObservable: Observable<IFoo> = Observable.from(this.dataStoreSubject);
public getNetworkData(): Observable<IFoo[]> {
return this.http.get()
.map((response: IResponse) => {
this.dataStore = <IFoo[]>response;
this.dataStoreSubject.next(this.dataStore);
return this.dataStore;
});
}
这将允许我公开Observable,而不公开Subject 和随后的subject.next(); 方法。
我的问题是:在 RxKotlin 或 RxJava 中建立类似逻辑的最惯用的方法是什么?
【问题讨论】:
-
所以你只想
hide()Subject的Observer方法? (看看我在那里做了什么?) -
这很有帮助@GergelyKőrössy!此外,我试图找到
BehaviorSubject和Observable之间的关系,因为在Typescript 中,从RxJava 中的BehaviorSubject创建Observable相当简单,似乎它在BehaviorSubject需要的地方反向工作来源Observable。向我的观察者公开BehaviorSubject是否被认为是正当的? -
BehaviorSubject可以使用其静态create()方法创建,而无需任何“外部”。 -
我知道
BehaviorSubject.create()。就像我之前说的,我很好奇BehaviorSubject和Observable之间的关系。我知道我可以四处创建随机的BehaviorSubjects,但这并不一定能解释BehaviorSubject和Observable之间的相关性,或者如果公开BehaviorSubject是一个惯用的设计决策。 -
我不确定我是否理解您的问题。
Subjects 通常同时是Observables 和Observers。您可以将Subject用于内部用途,因为它具有“推送”方法 (on***),并且您可以使用hide运算符返回Observable,因此调用者无法访问这些方法。
标签: java rxjs rx-java rx-java2 rx-kotlin