当前位置: 首页 > 知识库问答 >
问题:

观察者和订阅者的区别是什么?

叶德本
2023-03-14

我正在尝试破译以下函数:

Subscription getCar(id, Observer<Car> observer) {
    return getCarDetails(id, new Observer<CarDetails> {
                             @Override
                             onNext(CarDetails details) {           
                                 observer.onNext(details.getCar());
                             } });
}
    null

共有1个答案

景鸿才
2023-03-14

编辑:附@Alrid评论

DR

public abstract class Subscriber<T> implements Observer<T>, Subscription

因此,订阅者是观察者的一个实现,带有订阅的附加语义(更多的是关于非订阅)。您问题中的代码只是显示它传递观察者接口,而不是实现(通常的编程实践)。

实际上,您应该阅读这个网站(或书)的内容:http://www.introtorx.com。它是关于RX.NET的,但是概念是完全相同的,它们是由Erik Meijer创建的,RxJava实现者遵循它们(如果适用于Java语言的话)。

本页将引起您的兴趣(它是第二章):键类型

在这里,你将在第一段中读到:

即使类型/API有点不同,您也会从这本书中学到很多东西,可能比一些博客学到的要多得多。

本书没有说的(...因为它在RxJava实现中)

RxJava主要开发人员此时引入了一个轻微的变化(请参见PR#792),它允许区分两种类型的合同:

    null

在上述情况下公开subscriber而不是observer,在大多数情况下不会干扰代码,但这不是它的预期用途,除非需要这些非订阅语义。但最终实现订阅服务器,可能会遇到一些陷阱,如:

  1. 将资源用于您不会使用的功能
  2. 无法从其他类继承
  3. 写入不正确的取消订阅代码
  4. 复制/粘贴代码不正确的代码或为不同上下文编写的正确代码
 类似资料:
  • 问题内容: 我试图破译以下功能: 我从http://blog.danlew.net/2014/09/15/grokking-rxjava- part-1/ 获得了一个很好的rxjava简介,但是它只是顺便提到了Observer,说您将在大多数情况下使用Subscriber从Observable发射到消费项目的时间。 有人可以向我解释 什么是观察者? 观察者与订户有何不同? 上面的代码段是做什么的?

  • 从这个留档: RxJS为JavaScript引入了一个新的Push系统。可观察对象是多个值的生产者,将它们“推送”给观察者(消费者)。 订阅可观察对象类似于调用函数。 要调用可观察对象,我们应该从可观察对象本身调用函数,并将观察者作为可观察对象提供的数据的使用者传递,如: 本文件还说明: 什么是观察者?观察者是被观察者所传递价值的消费者。观察者只是一组回调,每个回调对应于被观察者发送的每种类型的通

  • 我有这个问题,我一直在寻找,但找不到解决方案(或者也许我不能根据其他答案做出解决方案)。 我的问题是,我需要找到一种方法来等待可观察的(有自己的订户)并等待另一个可观察的(有自己的订户)完成。 场景是这样的: 奥布1- 奥布斯2 - 我主要担心的是我需要两个订阅者。在我看来,obs1 和 obs2 并行运行,但需要检查 obs1 是否以新的会话令牌完成。也许这不是RxJava的主要目的。 Obs1

  • 观察者模式是定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。

  • 我正在学习RxJS,对于“听众”在哪里(在可观察的或观察者中),他们是如何订阅/取消订阅的,以及当观察者“不再对”可观察的“不感兴趣”时会发生什么,比如当你使用或。 对于第一部分——什么是订阅什么,什么是倾听者——我对这些陈述之间看似矛盾的地方感到困惑。从http://reactivex.io/rxjs/manual/overview.html我们读到观察者不是观察者的“听众” 这与addEven

  • 我们支持使用分布式消息系统,例如 etcd 来保持多个Casbin执行器实例之间的一致性。 因此,我们的用户可以同时使用多个Casbin 执行器来处理大量的权限检查请求。 与策略存储 adapters类似,我们没有把watcher的代码放在主库中。 任何对新消息系统的支持都应该作为watcher程序来实现。 完整的Casbin watchers列表如下所示。 欢迎任何第三方对 watcher 进行