【发布时间】:2017-06-25 04:28:02
【问题描述】:
我正在尝试使用 RxJava + Retrofit + Kotlin 来学习链式请求。 我正在学习的教程是使用 RxJava 1.x,所以当我尝试使用 RxJava 2.x 重新实现时,我无法让 .zip() 工作。
这是一个使用 Star Wars API 的简单应用,返回电影列表,ando 为每部电影获取角色。
fun loadMoviesFull(): Observable<Movie> {
return service.listMovies()
.flatMap { filmResults -> Observable.from(filmResults.results) }
.flatMap { film ->
Observable.zip(
Observable.just(Movie(film.title, film.episodeId, ArrayList<Character>())),
Observable.from(film.personUrls)
.flatMap { personUrl ->
service.loadPerson(Uri.parse(personUrl).lastPathSegment)
}
.map { person ->
Character(person!!.name, person.gender)
}
.toList(),
{ movie, characters ->
movie.characters.addAll(characters)
movie
})
}
}
如果您想查看教程的完整实现,这是链接(cmets 是葡萄牙语): http://www.nglauber.com.br/2017/03/rxjava-kotlin-retrofit-star-wars-api.html
我只想知道 ir 的语法,因为我无法在 2.x 上实现。
非常感谢你,我很抱歉我的英语不好。
【问题讨论】: