我使用 Retrofit 和 RxJava 从 Facebook 下载两个页面的帖子。我想通过 Observable.zip 下载它们,但收到 onError :操作未实现:未实现
。
我的代码:
var fb1 = dataManager.getPosts(ApplicationConstants.FACEBOOK_PAGE_1, ApplicationConstants.FACEBOOK_APP_TOKEN, "70")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
var fb2 = dataManager.getPosts(ApplicationConstants.FACEBOOK_PAGE_2, ApplicationConstants.FACEBOOK_APP_TOKEN, "70")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
val observableZip : Observable<PostList> = Observable.zip(fb1,fb2, object: Function<PostList, PostList>, BiFunction<PostList, PostList, PostList> {
override fun apply(t: PostList): PostList {
}
override fun apply(t1: PostList, t2: PostList): PostList {
}
})
compositeDisposable.add(observableZip.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(
{result -> posts.addAll(result.data)},
{t : Throwable? -> Log.d("TAG",t?.message) },
{view.setAdapter(posts)
view.hideProgressBar()}
))
我不太明白如何制作Observable.zip,因为互联网上的例子没有清楚地解释。
问:如何更改我的代码以使 Observable.zip 正常工作?
最佳答案
您的zip
应如下所示:
val observableZip : Observable<PostList> = Observable.zip(fb1,fb2, object : BiFunction<PostList, StriPostList, PostList> {
override fun apply(t1: PostList, t2: PostList): PostList {
// do the zipping
}
})
- 不存在参数类型为
Function
、和BiFunction
的zip
。只有可观察值列表,然后是一个BiFunction
(或者,也可以是一个ObservableSource
和一个普通的Function
) - 从 Rx 使用
BiFunction
非常重要,因此请确保您使用的是import io.reactivex.functions.BiFunction
而不是java.util.function.BiFunction
关于java - Observable.zip 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203438/