【问题标题】:RXJava - concat doesn't worksRXJava - concat 不起作用
【发布时间】:2018-01-06 18:18:48
【问题描述】:

我在使用 RXJava 和 Kotlin 时遇到问题。

我正在使用 LiveData 和 Rx,我的问题是 concat 方法没有连接我在虚拟数据中拥有的两个数组。

这是我的代码:

 disposables.
                add(
                Observable.concat(Observable.just(DummyContent.COMPANIES),
                        Observable.just(DummyContent.COMPANIES))
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({
                    Timber.d("get companies success ${it.size}" )
                    companiesLiveData.value = it
                },{
                     t -> Timber.e(t, "get companies error")
                }))

虚拟内容:

 val COMPANIES: MutableList<Company> = ArrayList()
  ...
   // Add some sample items.
        for (i in 1..4) {
            addCompany(createDummyCompany(i))
        }

当我运行代码时,我只看到列表中的 4 个元素,我期望收到 4 + 4 = 8 个项目,因为 concat 方法。

在 LogCat 中,我两次看到此消息:让公司成功 4

我怎样才能做到这一点?

【问题讨论】:

    标签: java android kotlin reactive


    【解决方案1】:

    Observable.concat() 连接给它的两个流。因此,您将收到两个带有单个列表的事件。如果要合并列表本身,则必须发出单个元素而不是列表,然后再次使元素成为列表。

    Observable.concat(Observable.fromIterable(DummyContent.COMPANIES),
                      Observable.fromIterable(DummyContent.COMPANIES))
              .toList()
    

    【讨论】:

    • 太棒了,它有效,你能告诉我 Observable.fromIterable 和 Observable.just 之间的区别吗,两者的返回值都不一样?
    • 第一个发射可迭代的每个元素,第二个发射可迭代本身。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多