Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在接收链中包含条件?_Java_Rx Java_Reactive Programming - Fatal编程技术网

Java 如何在接收链中包含条件?

Java 如何在接收链中包含条件?,java,rx-java,reactive-programming,Java,Rx Java,Reactive Programming,如果满足某个条件,我试图切换到另一个可观察的。这里,如果列表为空,我需要使用另一个可观察的: Observable<List<Something>> obs = service.getObservable(); obs.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .ifTheListIsEmpty(()-> newObservable) // I ne

如果满足某个条件,我试图切换到另一个可观察的。这里,如果列表为空,我需要使用另一个可观察的:

Observable<List<Something>> obs = service.getObservable();
obs.subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .ifTheListIsEmpty(()-> newObservable) // I need something like this
    .subscribe(subscriber)
Observable obs=service.getObservable();
obs.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.IftheListEmpty(()->newObservable)//我需要这样的东西
.订阅(订户)
我在中阅读了有关switchCase的内容,但我不知道如何使用它…

使用flatMap:

.flatMap(list ->
     list.isEmpty()
       ? otherObservable
       : Observable.just(list))
使用平面图:

.flatMap(list ->
     list.isEmpty()
       ? otherObservable
       : Observable.just(list))

尽管@Tassos Bassoukos有一个有效的答案,但另一种方法是:

obs.flatMapIterable(l -> l)
   .switchIfEmpty(otherObservable)

根据您的需要,您可以考虑一个<代码>可观察的< /代码>,它发出多个<代码>某物< /代码>。它允许您使用

Observable.from(list)
创建
obs
。您甚至不再需要
flatMapIterable


它还使使用其他操作符(如
map
)变得更加容易,因为您不再需要对整个列表进行操作。

尽管@Tassos Bassoukos有一个有效的答案,但另一种方法是:

obs.flatMapIterable(l -> l)
   .switchIfEmpty(otherObservable)

根据您的需要,您可以考虑一个<代码>可观察的< /代码>,它发出多个<代码>某物< /代码>。它允许您使用

Observable.from(list)
创建
obs
。您甚至不再需要
flatMapIterable

它还使使用其他操作符(如
map
)变得更加容易,因为您不再需要对整个列表进行操作