Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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_Kotlin_Rx Java_Reactive Programming_Reactivex - Fatal编程技术网

Java 如何链接可观察对象?

Java 如何链接可观察对象?,java,kotlin,rx-java,reactive-programming,reactivex,Java,Kotlin,Rx Java,Reactive Programming,Reactivex,我需要把两个观测值连起来,第二个取决于第一个。 因此,我得到的是: 可观察1->请愿返回可观察 我需要的是添加到TvShow对象TvShow.setList(List)的第二个可观察(列表)的结果,然后返回它 提前感谢根据评论中提供的信息,您可以尝试使用以下代码(这是Java代码,但应该很容易将其转换为Kotlin): 根据注释中提供的信息,您可以尝试使用以下代码(这是Java代码,但应该很容易将其转换为Kotlin): 我不完全明白你在说什么。但我想你要找的是拉链function@mohsen

我需要把两个观测值连起来,第二个取决于第一个。 因此,我得到的是:

可观察1->请愿返回可观察

我需要的是添加到TvShow对象
TvShow.setList(List)
的第二个可观察(列表)的结果,然后返回它


提前感谢

根据评论中提供的信息,您可以尝试使用以下代码(这是Java代码,但应该很容易将其转换为Kotlin):


根据注释中提供的信息,您可以尝试使用以下代码(这是Java代码,但应该很容易将其转换为Kotlin):


我不完全明白你在说什么。但我想你要找的是拉链function@mohsen但是,如果第二个可观察的请求需要作为objectA属性的参数,我可以使用zip吗?对不起,英语不是我的第一语言。这是一种申请方法吗?什么是obeservable2?尝试调整问题和代码段/description@mslowiak我用(我认为)一个不太令人困惑的例子编辑了这个问题。@wilkin25在下面贴了一个答案,请看一下。我不完全明白你在说什么。但我想你要找的是拉链function@mohsen但是,如果第二个可观察的请求需要作为objectA属性的参数,我可以使用zip吗?对不起,英语不是我的第一语言。这是一种申请方法吗?什么是obeservable2?尝试调整问题和代码段/description@mslowiak我用(我认为)一个不那么混乱的例子编辑了这个问题。@wilkin25在下面贴了一个答案,请看一下
//kotlin
fun getTvShow(): Observable<TvShow> {
    return retrofitPetitionGetShow()...
}
//java
Observable<TvShow> getTvShow(){
    return retrofitPetitionGetShow()...
}

Observable.range(1, TvShow.totalSeasons)
            .flatMap { seasonNumber: Int ->
                retrofitPetitionGetSeason(seasonNumber)....
            }.toList()  
private Observable<TvShow> getTvShow() {
    return retrofitPetitionGetShow();
}

private Single<List<Season>> getSeasons(TvShow tvShow) {
    return Observable.range(1, tvShow.getTotalSeasons())
            .flatMap(seasonNumber -> retrofitPetitionGetSeason(seasonNumber))
            .toList();
}

public Observable<TvShow> chainObservables() {
    return getTvShow()
            .flatMap(tvShow -> getSeasons(tvShow).map(tvShow::withSeasons).toObservable());
}
public TvShow withSeasons(List<Season> seasons) {
        return this.seasons == seasons ? this : new TvShow(this.name, this.totalSeasons, seasons);
    }