Rx java flatMapCompletable不调用给定的操作
我希望flatMapCompletable在Completable正常完成时调用给定的操作。然而,它并不像我想的那样起作用。下面是一个简单的例子:Rx java flatMapCompletable不调用给定的操作,rx-java,rx-java2,Rx Java,Rx Java2,我希望flatMapCompletable在Completable正常完成时调用给定的操作。然而,它并不像我想的那样起作用。下面是一个简单的例子: PublishProcessor<String> processor = PublishProcessor.create(); processor.flatMapCompletable(s2 -> { System.out.println("s2 " + s2); return Co
PublishProcessor<String> processor = PublishProcessor.create();
processor.flatMapCompletable(s2 -> {
System.out.println("s2 " + s2);
return Completable.complete();
}).subscribe(() -> {
System.out.println("done"); // it does not come here
});
PublishProcessor=PublishProcessor.create();
处理器。flatMapCompletable(s2->{
系统输出打印项次(“s2”+s2);
返回Completable.complete();
}).订阅(()->{
System.out.println(“完成”);//它不在这里
});
这是预期的行为吗?如果是,如何检查可完成的任务是否已完成
Completable.complete().doFinally()
?您需要调用processor.onComplete()代码>以使操作完成。这是因为在subject侦听传入事件时,您仍然订阅了subject
Flowable
正常完成
Flowable.just(1).flatMapCompletable(s2 -> {
System.out.println("s2 " + s2);
return Completable.complete();
}).subscribe(() -> {
System.out.println("done"); // it does come here
});
正如Alexander所指出的,你没有得到任何东西的原因是,PublishProcessor
从未完成
关于flatmapCompletable
注释,如下所示
将上游可观测的每个元素映射到CompletableSources中,订阅它们并等待上游和所有CompletableSources完成
因此,您必须确保上游可观察到的和所有CompletableSources都已完成,才能接收任何事件
谢谢。谢谢您的回复。我明白了。如果我想使用PublishProcessor,也许会是这样<代码>处理器.flatMapCompletable(s1->{System.out.println(“s1”+s1);返回Completable.complete().doOnComplete(()->processor.onComplete();})。订阅(()->System.out.println(“完成”)代码>