Pab*_*lez 35 java android reactive-programming rx-java2
我正在使用Clean Architecture开发Android应用程序,我正在将其迁移到RxJava 2.x. 我必须向soap服务发出一些网络请求,所以我在域模块中定义了api接口:
public interface SiginterApi {
Observable<User> login(String user, String password);
...
Observable<List<Campaign>> getCampaigns(List<Long> campaignIds);
}
Run Code Online (Sandbox Code Playgroud)
我已经读过网络请求应该用" Flowable"进行,因为背压管理是因为它是'冷可观察'.在另一方面,我知道请求的结果将是成功的(与响应)或错误,所以我不知道我是否应该使用Flowable或Single甚至Observable.
此外,我有这样的数据库访问:
public interface UserRepository extends Repository {
Observable<Void> saveUser(String username, String hashedPassword, boolean logged, User user);
...
Observable<User> findUser(String username, String hashedPassword);
}
Run Code Online (Sandbox Code Playgroud)
我不知道我是否应该使用Completable/ Flowable/ Observable在saveUser方法和Single/ Flowable/ Observable的findUser方法.
npa*_*ace 35
背压是当源Observable发射物品比Subscriber消耗它们更快时发出的物质.这通常是热观察的一个问题,而不是像您的网络请求那样的冷观察.
我认为你应该使用Completable而不是Observable<Void>在你的saveUser方法中,并Single用于你遵循请求/响应或输入/输出模式的所有地方.Observable当你真正想要连续的事件流时,应该使用它.
基数是理解Completable,Maybe和Single之间差异的一种方式:
Maybe<T>只是基数为0或1的Observable,即它表示可以存在或不存在的结果。Single<T>是一个Observable,始终返回结果,即基数为1。Completable可以解释排序为Observable<Void>0即基数。因此,根据您的情况,您可以通过以下方式更改存储库的签名:
Completable saveUser(...);
Single<User> findUser(...);
Run Code Online (Sandbox Code Playgroud)
(我没有提到s与反压Flowable类似)。Observable
| 归档时间: |
|
| 查看次数: |
10471 次 |
| 最近记录: |