当前位置: 首页 > 面试题库 >

RxJava 2.x:我应该使用Flowable还是Single / Completable?

顾涵衍
2023-03-14
问题内容

我正在使用Clean
Architecture开发Android应用程序,并将其迁移到RxJava2.x。我必须向soap服务发出一些网络请求,因此我在域模块中定义了api接口:

public interface SiginterApi {
    Observable<User> login(String user, String password);
    ...
    Observable<List<Campaign>> getCampaigns(List<Long> campaignIds);
}

我已经读过Flowable,由于背压管理,网络请求应使用“
”进行,因为它是“冷可观察的”。在另一方面,我知道请求的结果将是成功的(与响应)或错误,所以我不知道我是否应该使用FlowableSingle甚至Observable

此外,我有这样的数据库访问权限:

public interface UserRepository extends Repository {
    Observable<Void> saveUser(String username, String hashedPassword, boolean logged, User user);
    ...
    Observable<User> findUser(String username, String hashedPassword);
}

我不知道我是否应该使用Completable/ Flowable/ ObservablesaveUser方法和Single/
Flowable/ ObservablefindUser方法。


问题答案:

背压是当源Observable排放物品的速度快于Subscriber消耗物品的速度时所得到的。最常见的问题是 观测,而不是像网络请求这样的
观测。

我认为您应该使用Completable而不是Observable<Void>您的saveUser方法,并Single在遵循请求/响应或输入/输出模式的所有地方使用。Observable当您确实需要连续的事件流时,应使用。



 类似资料:
  • 用例:I有一个用例,其中客户机生成私钥和公钥,将64位编码的公钥发送给服务器。 在服务器端,我将使用此公钥加密消息,并将加密的消息发送到客户端,客户端使用其私钥对其进行解密。商定的算法是“RSA”。 问题是在服务器端,我看到某些密钥正在使用作为密钥规范工作 虽然一些键抛出异常()使用但使用工作: 所以,我开始理解的是,客户端和服务器需要同意是否使用:或来编码密钥。我的问题是哪一个更适合我的用例?什

  • 问题内容: 我正在使用c / c 为osx和linux开发命令行界面可执行文件。该项目将链接到opencv。我应该使用libc 还是libstdc ++? 问题答案: 我会为每个操作系统使用本机库,即GNU / Linux上的libstdc 和Mac OS X上的libc 。 libc 在GNU / Linux上不是100%完整的,而libstdc 更完整时使用libc并没有真正的优势。另外,如果

  • 问题内容: 和CSS 和有什么不一样?我应该使用哪一个?为什么? 问题答案: 所有这些答案似乎都是不正确的。与直觉相反,在CSS 中不是pixel 。至少不是在简单的物理意义上。 从W3C,EM,PX,PT,CM,IN…阅读本文,了解如何为CSS发明一个“神奇的”单元。的含义因硬件和分辨率而异。(该文章是最新的,最新更新为2014-10。) 我自己的思考方式: px单位是CSS的魔术单位。它与当前

  • 问题内容: 我正在一个将Angular和Underscore都作为依赖项的项目。 当我需要创建对象的副本时,根据当时的心情,我可以使用或 在我看来,这些方法中的一种可能比另一种更快速/可靠/健壮。 假设已经包含两个库,那么这两个函数中的任何一个是否存在使另一个函数更好或更坏使用的已知问题? 问题答案: 关于您的问题: angular.copy和_.clone是不同的。这不是哪个更好的问题,而是关于

  • 问题内容: 我想从文本文件中读取每一行并将它们存储在ArrayList中(每一行是ArrayList中的一项)。 到目前为止,我知道BufferedInputStream写入缓冲区,并且仅在缓冲区为空时才进行另一次读取,这可以最大程度地减少或至少减少操作系统的操作量。 我正确吗-我说得通吗? 如果以上情况是在任何情况下,任何人都想使用DataInputStream。最后,我应该使用这两个中的哪一个

  • 我使用Room和RxJava,我想使用第二个的功能来过滤来自第一个的数据。 假设房间是返回用户。 谢谢