Observable.zip问题

dro*_*oho 2 java android observable kotlin rx-java

我使用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()}
        ))
Run Code Online (Sandbox Code Playgroud)

我并没有完全强调如何使Observable.zip作为互联网上的例子没有明确解释.

问:如何更改我的代码以使Observable.zip工作?

Lov*_*vis 5

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
        }
    })
Run Code Online (Sandbox Code Playgroud)
  1. 没有zip带类型的参数Function, BiFunction.只有可观察的列表然后是BiFunction(或者,单个ObservableSource和正常Function)
  2. 使用BiFunctionfrom Rx 很重要,所以请确保你没有使用import io.reactivex.functions.BiFunction java.util.function.BiFunction