我试图破译以下功能:
Subscription getCar(id, Observer<Car> observer) {
return getCarDetails(id, new Observer<CarDetails> {
@Override
onNext(CarDetails details) {
observer.onNext(details.getCar());
} });
}
我从http://blog.danlew.net/2014/09/15/grokking-rxjava-
part-1/
获得了一个很好的rxjava简介,但是它只是顺便提到了Observer,说您将在大多数情况下使用Subscriber从Observable发射到消费项目的时间。
有人可以向我解释
Javadoc使它看起来像订户。订阅者的Javadoc表示它实现了观察者和订阅。我很困扰。
编辑 :@Alrid的评论
tl; dr
public abstract class Subscriber<T> implements Observer<T>, Subscription
因此,订阅服务器是Observer的实现,在订阅上具有其他语义(更多关于取消订阅)。您问题中的代码只是表明它通过了Observer
接口,而不是实现(通常是编程实践)。
此代码还返回一个Subscription
,这可能是因为该代码的作者认为客户端应该只能访问Subscription
方法,而不能访问可观察对象产生的元素。那可能是程序员错误。
很长的故事
真的是你应该阅读本网站内容(或预订):http://www.introtorx.com
是关于Rx.Net,但其概念是非常相同的,它们是由埃里克·梅杰和RxJava实施者创建跟着他们(
(如果适用于Java语言)。
此页面将使您感兴趣(这是第二章):KeyTypes
在这里,您将阅读第一段:
使用Rx时需要了解两种主要类型,以及一些辅助类型的子集,它们可以帮助您更有效地学习Rx。IObserver和IObservable构成了Rx的基本构建块,而ISubject的实现减少了Rx初学者的学习难度。
…
Rx本质上是建立在Observer模式的基础上的。.NET已经公开了实现观察者模式的其他方法,例如多播委托或事件(通常是多播委托)。
即使类型/ API有所不同,您也可以从这本书中学到很多东西,可能比从一些博客中学到的更多。
这 本书 没有说什么( …因为它在RxJava实现中 )
RxJava的主要开发人员此时引入了一些细微的变化(请参阅PR
#792),从而可以区分两种类型的合同:
Observer
Subscription
这项更改可以更好地表达/分割RxJava库实现类的这些问题。
但是,作为库用户,使用RxJava库的实际实现应该足够好。
实现订户需要更多的知识,工作和维护,实际上,订户的语义非常重要,具体取决于可观察到的源的类型(热还是冷?创建昂贵?)
在大多数情况下,公开Subscriber
而不是Observer
在上述情况下不会干扰代码,但是除非需要那些取消订阅的语义,否则它不是预期的用途。但最终实施Subscriber
和可能涉及陷入一些陷阱,例如:
我正在尝试破译以下函数: null
从这个留档: RxJS为JavaScript引入了一个新的Push系统。可观察对象是多个值的生产者,将它们“推送”给观察者(消费者)。 订阅可观察对象类似于调用函数。 要调用可观察对象,我们应该从可观察对象本身调用函数,并将观察者作为可观察对象提供的数据的使用者传递,如: 本文件还说明: 什么是观察者?观察者是被观察者所传递价值的消费者。观察者只是一组回调,每个回调对应于被观察者发送的每种类型的通
本文向大家介绍JavaScript设计模式之观察者模式(发布者-订阅者模式),包括了JavaScript设计模式之观察者模式(发布者-订阅者模式)的使用技巧和注意事项,需要的朋友参考一下 观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的dom事件. 也是js和dom之间实现的一种观察者模式. 只要订阅了div的click事件. 当点
问题内容: 我无法理解以下文本…这是否意味着空的构造函数?为什么拥有两个不同的版本很重要? https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html 在Java虚拟机级别,每个构造函数(第2.12节)都作为具有特殊名称的实例初始化方法出现。该名称由编译器提供。因为该名称不是有效的标识符,所以不能直接用Java编程语言编写的程序中使
我正在浏览微软的Rust教程,它是关于 实现函数,以便返回对插入向量中的值的引用 这里给出了解决方案,但它与我的不同之处在于它使用了 除了返回类型之外,我的和标准解决方案之间的另一个区别是,我只是简单地返回了参数,而标准解决方案使用复杂方式)。 我想知道我的解决方案是否有任何问题,本教程采取了另一种方式? 虽然@Masklin为我的问题提供了一个很好的答案,但它有点特定于我给出的示例,但没有直接解
我有这个问题,我一直在寻找,但找不到解决方案(或者也许我不能根据其他答案做出解决方案)。 我的问题是,我需要找到一种方法来等待可观察的(有自己的订户)并等待另一个可观察的(有自己的订户)完成。 场景是这样的: 奥布1- 奥布斯2 - 我主要担心的是我需要两个订阅者。在我看来,obs1 和 obs2 并行运行,但需要检查 obs1 是否以新的会话令牌完成。也许这不是RxJava的主要目的。 Obs1