如何将 Observable 对象映射到 Flowable<?> ?

How map Observable object to Flowable<?> ?

 private Observable< SimpleResource > resource;
 return resource.map(new Function<SimpleResource, Flowable<Data>>() {
  @Override
  public Flowable< Data > apply(SimpleResource resource) throws Exception {
    return resource.data().toFlowable();
  }
});


  Single<Data> data();

我需要有 Flowable 但我的结果是 Observable>

您做错的是 .toFlowable 应用在不正确的位置。

Observable.fromCallable { 1 }.map {
    it * 2
}.toFlowable(BackpressureStrategy.BUFFER)

如果 data 返回不同的数据类型(对于 Kotlin 很抱歉,但概念是相同的)

data class A(
        val data: Single<Int>
) {
    constructor() : this(data = Single.fromCallable { 1 })
}


val result: Flowable<Int> = Flowable
        .fromCallable {
            A()
        }
        .flatMap {
            it.data.toFlowable()
        }

既然你提到了 data() returns 一个 Single,你需要将所有的单个流转换成一个大流。将流转化为流,我们一般使用flatmap运算符:

resource.flatMapSingle(
            new Function<SimpleResource, Single<Data>>() {
                @Override
                public Single<Data> apply(SimpleResource resource) throws Exception {
                    return resource.data();
                }
            }
    ).toFlowable(BackpressureStrategy.BUFFER);