【问题标题】:Observable.zip issuesObservable.zip 问题
【发布时间】:2018-01-11 09:17:38
【问题描述】:

我使用 Retrofit 和 RxJava 从 Facebook 的两个页面下载帖子。我想通过 Observable.zip 下载它们,但我得到了onError : An operation is not implemented: not implemented

我的代码:

    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 工作?

【问题讨论】:

  • 能否包含错误的完整堆栈跟踪
  • 它在observableZip 中抛出错误:D/TAG: An operation is not implemented: not implemented
  • 尝试用返回 observable 的函数替换你的 fb1 和 fb2 变量。
  • 尝试只订阅fb1,看看它会产生什么。另请发布 t.printStackTrace() 打印的内容,而不是 Log.d 生成的内容。
  • @akarnokd 如果 droho 订阅,fb1fb2 将是 Disposables,所以 zip 将没有任何内容...

标签: java android kotlin rx-java observable


【解决方案1】:

您的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. 没有zip 类型为Function BiFunction 的参数。只有 observables 的列表,然后是 BiFunction(或者,一个单一的 ObservableSource 和一个普通的 Function
  2. 使用 Rx 中的 BiFunction 很重要,因此请确保您使用的是 import io.reactivex.functions.BiFunction 不是 java.util.function.BiFunction

【讨论】:

  • 谢谢!你的解决方案对我有用。我会给你投票,但我现在没有足够的回购
猜你喜欢
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
相关资源
最近更新 更多