java - Observable.zip 问题

标签 java android kotlin rx-java observable

我使用 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
        }
    })
  1. 不存在参数类型为 Function BiFunctionzip。只有可观察值列表,然后是一个 BiFunction(或者,也可以是一个 ObservableSource 和一个普通的 Function)
  2. 从 Rx 使用 BiFunction 非常重要,因此请确保您使用的是 import io.reactivex.functions.BiFunction 而不是 java.util.function.BiFunction

关于java - Observable.zip 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203438/

相关文章:

java - 如何将实现接口(interface)的类添加到 ArrayList

java - 如何管理多个微服务中的安全上下文

javascript - 如何将本地 html 文件显示到 webview 中?

android - 显示自定义排行榜 UI

android - 如何使用Kotlin的自定义适配器为 ListView 设置onItemClickListener

java - Hibernate JPA 在生成 ID 时检查冲突

java - Spring 项目如何访问 JBoss JNDI 数据源

java - picasso 无法在 StorageReference 的 onSuccess 方法中加载图像

java - 无法为 Spring Integration 5.0.4 (Spring 5.0.5) 创建 Kotlin 配置

intellij-idea - Kotlin "expected no parameters"尝试返回内联 lambda 时