在Java的PropertyChangeSupport中,observable维护着一个观察者列表。因此,如果可观察对象被删除,观察者将受到垃圾回收的影响。
所以,一个可观测者持有这种联系。
我的印象是,ReactiveX并非如此。尽管observable有一个subscribe方法,但它返回一个Subscription对象。此对象是否包含链接?
如果我用add()将这个对象添加到观察者中,这是让观察者保持链接的唯一方法吗?还是说观察者持有这种联系?
发布于 2017-02-01 00:18:24
我认为观察者仍然保持着与观察者的联系。查看下面的代码。
private Observable<CurrencyRatesDTO> getCurrencyRatesObservable(Set<String> currencies) {
return Observable.<CurrencyRatesDTO> create(sub -> {
CurrencyRatesDTO currencyRatesDTO = restTemplate.getForEntity(
CURRENCY_SERVICE_API + RestUtil.QUERY_PARAM_START_SYMBOL
+ RestUtil.getQueryParamStringForMultiValuedAttribute(SYMBOLS, currencies),
CurrencyRatesDTO.class).getBody();
sub.onNext(currencyRatesDTO);
sub.onCompleted();
}).doOnNext(c -> log.debug("Currency rates were retrieved successfully."))
.doOnError(e -> log.error("An ERROR occurred while retrieving the currency rates.", e));
}我们异步调用一些rest服务。一旦我们得到结果,我们使用onNext方法通知观察者,并在向观察者发出完成信号之前发出项。我写了一些博客文章13,你可能会发现它们在RxJava领域很有用。以下是我的博客post.According中的一小段摘录,很明显,Observable包含对观察者的引用。
RxJava提供了观察者和观察者。可观察者可以发送值。观察者,通过订阅来观看可观察对象。当一个可观察对象发出一个值时,当该可观察对象表示发生错误时,会通知观察者。当可观察对象发送它不再有任何值要发出的信息时,也会通知它们。相应的函数是来自观察者接口的onNext、onError和onCompleted()。订阅的实例表示观察者和可观察者之间的连接。如果您在此实例上调用unsubscribe(),则它将删除连接。
希望这能有所帮助。祝你编码愉快!
1 2 3
https://stackoverflow.com/questions/41961662
复制相似问题