问题标签 [rx-kotlin2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - RxJava / RxKotlin - 如果上一步失败,andThen 仍然执行。如何停止?
我是 RxJava 新手,在处理错误情况时遇到了困难。该应用程序在 Kotlin 中,但它可能不会有太大的不同。该场景基本上是用户身份验证,然后执行操作,但如果用户未获得授权/具有错误的身份验证令牌,我会生成异常并希望停止处理。现在我有我的检查令牌的功能,它看起来像这样。
然后我有一个看起来有点像这样的函数,它检查权限,然后如果他们被授权,应该做一个操作。
我想要的是,如果生成 UnauthorizedException 不执行 andThen。
也许我对文档的理解存在差距,但例如我尝试将doOnError
Throwable 放在andThen
. onErrorComplete
我在同一个地方试过。无论我做什么,andThen
最终都会执行。
如果该行执行,该模式会如何放弃Completable
链subscriber.onError
?
android - RxJava make a call for every single list item
I have a problem with RxJava.
I have a getAll()
method, it's returning with a list. It's serves data from Room database.
DeckEntity
have an id
and a name
field.
I created an another class called it PrepareItem
, because I want to box it with more parameter. (It will be an Adapter
model) Check it:
So, I want to call the getAll()
and I want to map it to PrepareItem. It's working yet.
But, there is the countsOfCards is equal 0
. I want to make an another repository call, to get the value, and set it. Important! Every value need a single call to repository. So if I have 5 item, than I need to wait until 5 another call finished.
I tried, but I get confused. (CODE UPDATED)
The onError
or onComplete
never called. Why?
Anyone have good idea to How to do it? I want it keep out from repository. Thank you!
UPDATE:
Solution:
Create a new class
Add new fun to DeckDao
Thats all its works! Thank you for the answer. It helped me a lot !
android-fragments - 如何取消订阅 RxKotlin/RxJava 中的 Flowable?
在这篇文章之后,我正在使用带有 RxJava/RxKotlin Flowable 的 Room 。我让它运行了,但是将它与 ViewPager 一起使用时遇到了 3 个片段的问题。
我将带您浏览一下我的代码:
我有一个带有选项卡布局和三个片段(A、B 和收藏夹)的 viewpager。前两个片段包含可以添加到收藏夹的数据列表。
在最喜欢的片段中,我使用 Flowable 来监听 A 和 B 所做的更改并相应地更新列表。但是,当一个项目在 A 和 B 中被收藏时,应用程序会崩溃,因为收藏片段中的 Flowable 订阅即使在片段不在前台时也会运行。
我想要的是能够在片段不在前台时停止订阅并在前台开始。
我试图在最喜欢的片段的 onPause 方法中停止它,但 flowable 没有取消订阅或处置方法。
我的代码是
android - RxKotlin - 错误的订阅,observeOn 线程更改主题的活动?
我有一个在随机时刻生成不同字符串的对象,我需要订阅这个生成器来获取这些字符串并将它们提供给 ui(也许它将是不同活动中的多个订阅者)。假设,我得到以下代码:
发电机:
必须使用生成的字符串的活动之一:
在这种情况下,仅在活动中创建的correctThreadObserver工作正常,但wrongThreadObserver在计时器线程中保持工作,似乎它忽略了生成器中的指令subscribeOn、ObserveOn、doOnNext,无论这些指令在哪里调用 - 在 init 中,在计时器线程中,在通过从生成器获取对象来进行活动 - wrongThreadObserver仍然在计时器线程中工作。所以日志是:
I/correctThread doOnNext: main 2
I/正确的ThreadObserver:RxNewThreadScheduler-1 941
I/correctThread doOnNext: main 2
I/正确的ThreadObserver:RxNewThreadScheduler-1 941
I/wrongThreadObserver: timerThread 937
I/correctThread doOnNext: main 2
I/正确的ThreadObserver:RxNewThreadScheduler-1 941
I/wrongThreadObserver: timerThread 937
I/wrongThreadObserver: timerThread 937
I/wrongThreadObserver: timerThread 937
没有doOnNext
也没有主线程wrongThreadObserver
我做错了什么?
android - 当emitter.onNext()处于异步循环时如何调用emitter.onComplete()
我有一个异步调用,我在其中放置了emitter.onNext() 的回调监听器。这个异步调用在 for-in 中(我知道列表大小)。我想在 onNext() 中发出最后一个元素时调用 onComplete()。
计数,因为它是一个异步调用,没有以正确的方式递增,并且永远不会调用 onComplete()。
处理这种情况的正确方法是什么?我需要 onComplete 来显示视图并删除加载/进度条。
rx-java - 如何在 RxJava 中用 Single 链接 Observable?
我是 Rx 世界的新手,所以请多多包涵。
我的代码在 Kotlin 中,但 Java 代码也会有所帮助。
我有两种方法,其中一种从数据库加载任务,如果有任务,我想将它们发送到服务器。
我知道我可以使用 flatmap 来链接 observables,但无法让它在 Single 和 Observables 之间工作。
rx-java2 - 如何确保在 RxJava2 中发出第二个 Observable 之前订阅第一个 Observable?
阅读了Hannes Dorfmann 撰写的文章MODEL-VIEW-INTENT后,我使用 MVI 模式设计了我的应用程序。
我有两个可重用的片段,BarFragment 和 ContentFragment。我的活动是由这两个片段组成的。
数据流为:
第 1 步:changeKeywordIntent() 方法从 BarFragment 的搜索视图中收集用户输入。
第 2 步:要重用片段,不直接通过 render() 方法订阅意图。
收到意图后,演示者首先向 partialViewStateSubject 发出 PartialViewState.ChangeKeyword(keyword) 对象。这个部分视图状态将被简化为 ViewState,然后被所有 MvpView 的 render() 方法使用。IE,视图将在适当的位置显示该关键字。
这就像一个广播。
在渲染 PartialViewState.ChangeKeyword(keyword) 对象后,演示者调用业务逻辑,然后发出 PartialViewState.ContentFirstPage(response.body()) 以 PartialViewState.Loading() 对象开始。
我的问题是在这一步中,调用哪个 RxJava2 方法可以确保在第二个 observable 发出之前,第一个 observable 被订阅?以及创建第二个 observable 的方法是什么?
第三步:当接收到PartialViewState对象时,将其缩减为ViewState对象,并将ViewState对象推送给viewStateSubject。关键代码是
第 4 步:所有演示者在 bindIntents() 方法中订阅 viewStateSubject
第五步:渲染viewState对象,本题代码可以跳过。
所以我的问题是在第 2 步中,有人可以用 RxJava2 帮助我处理该代码吗?谢谢你。
android - 处置 observables
这个问题与 Android 和生命周期有关。以前,我会拥有一系列主题并在创作时订阅它们。
销毁后,我会将所有主题标记为完整,假设它处理了所有订阅者。
使用 Android Studio 3.1,我会收到任何“未使用”的订阅者的警告。解决方案是将它们添加到“可完成的一次性”中,然后在销毁时将其丢弃。
“复合一次性”是我需要在销毁时正确取消请求的全部内容吗?我以前将主题标记为完整的方法有什么作用吗?在这种情况下是否有必要?
作为代码示例:
rx-kotlin - 如何使用 MockK 模拟 observable
我有一个Observable<Int>
作为公共 API 一部分的数据提供者。我正在测试的班级将其映射到Observable<String>
.
如何创建一个模拟,以便它可以在数据提供者的 observable 上发送不同的值?
我可以使用Fake
对象来完成,但我认为 MockK 不需要做很多工作。
简化代码:
rx-java - 重用部分 RxJava 流
可能是一个 rx newbee 问题。
如果我有两个 rx 流,它们有一些共同的部分,是否有可能提取和重用它们?
这是伪代码示例:
这个乐趣需要一个 id 并且应该只返回一个状态
这个不带 id 但已经是一个对象,应该检查状态是否正常
先感谢您