我有两个完整的。我想做以下场景:如果第一个Completable到达onComplete,继续第二个Completable。最终结果将是完成第二个可完成项。
这就是我在使用单getUserIdAlreadySavedInDevice()和Compltable login()时的做法:
@Override
public Completable loginUserThatIsAlreadySavedInDevice(String password) {
return getUserIdAlreadySavedInDevice()
.flatMapCompletable(s -> login(password, s))
}
尝试
Completable.concat
Returns a Completable which completes only when all sources complete, one after another.
http://reactivex.io/RxJava/javadoc/io/reactivex/Completable.html#concat(java.lang.Iterable)
TL;DR:其他答案遗漏了一个微妙之处。使用doThingA()。然后(doThingB())如果您想要与concat等效,请使用doThingA()。然后(可完成。延迟()-
flatMap()
是merge()的映射版本
是concat()的映射版本
对于可完成的
,您需要使函数调用像单个或可观察的(或者最好是这样,在点击订阅之前什么都不会发生-这是一个很好的惯例,在官方Rx库以及我遇到的任何Rx扩展中都会用到,对于高级用户,这只指冷完成,但大多数人可以忽略这一点)一些示例:
>
foo(a). and然后(bar(b))
将:
foo(a)。然后(可完成。延迟()-
调用foo(a)
- 订阅步骤
1
的结果 - 只有当
foo(a)
返回的可完成项成功时,才调用bar(b)
我将省略对merge()的处理,因为它变得有点复杂,但长话短说,如果你想要“并行”,就可以调用它。
上面的答案有点正确,但我发现它们有误导性,因为它们忽略了渴望评估的微妙之处。
,但只有当doThingA()返回的可观察对象完成时,才订阅doThingB()html" target="_blank">返回的可观察对象。doThingA()。然后(doThingB())
将立即调用doThingB()
doThingA()。然后(可完成。延迟()-
只有当
doThingB()
在订阅事件之前有副作用时,这才是重要的。例如。Single.just
在subscribe事件之前没有副作用的实现(真正的冷可观察)可能是单一的。仅(1)。doOnSuccess(一)-
在我刚刚遇到的情况下,A是一些验证逻辑,并且立即启动异步数据库更新,从而完成VertX ObservableFuture。这很糟糕。可以说,编写doThingB()
时应该只在订阅时更新数据库,将来我将尝试这样设计。
您正在查找第二个操作员。
返回一个Completable,该Completable首先运行此Completable,然后运行另一个Completable。
firstCompletable
.andThen(secondCompletable)
通常,此运算符是可完成的平面图的“替换”:
Completable andThen(CompletableSource next)
<T> Maybe<T> andThen(MaybeSource<T> next)
<T> Observable<T> andThen(ObservableSource<T> next)
<T> Flowable<T> andThen(Publisher<T> next)
<T> Single<T> andThen(SingleSource<T> next)
问题内容: 我有两个完成。我想做以下情形:如果第一个Completable到达onComplete,则继续第二个Completable。最终结果将是第二完成的onComplete。 当我有单个 getUserIdAlreadySavedInDevice() 和Completable login() 时,这就是我的方法: 问题答案: 您正在寻找运营商。 返回一个Completable,它首先运行此C
如果我对如何使用RxJava2缺乏基本的了解,请提前道歉,因为在我看来,这应该是非常基本的东西。我已经因为不成功的Google搜索而绞尽脑汁,所以欢迎任何资源推荐。为了清晰起见,我选择使用解决方法代码的“净化”表示。 我有一个RxJava2函数,它返回一个
这是我的一个货车租赁数据库的起始代码。 如何将汽车链接到该位置。例如,CBD的位置有Wicked,Zepplin和Floyd,Penrith有Queen。因此,如果命令行参数具有“打印CBD”,那么它必须显示CBD中可用的货车。 任何帮助将不胜感激。
我正在尝试将方法的调用/结果链接到下一个调用。我得到了编译时错误方法,因为if无法从前一次调用中获得objB的引用。 如何将上一次调用的结果传递给下一个链?我是不是完全误解了这个过程?
我正在尝试将我的两个Android布局连接起来,并完成这个过程。 MainActivity.java 记录活动。Java语言 content_main.xml recording.xml AndroidManifest。xml 堆栈跟踪04-22 14:24:09.415 4470-4470/andler.java:102E/AndroidRuntime: FATAL EXCEPTION: mai
大家好,我正在尝试在两个双链接列表之间完全交换两个节点(值和地址也是)。只有位于相同位置的节点才能在两个节点之间交换,即位置2的节点只能由另一个LinkedList中位置2的节点交换。考虑下面的2个链接列表示例: 假设我们想交换第三个元素,即162和830。交换后,领英列表变成: 我已经尝试了下面的代码,但它不能替换前面的元素。 我怎样才能完成这项任务? elseif不交换前面的元素,例如,如果我