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&gt;
答案 0 :(得分:1)
你做错了是将.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()
}
答案 1 :(得分:1)
由于您提到data()
返回Single
,因此您需要将所有单个流转换为一个大流。要将流转换为流,我们通常使用flatmap
运算符:
resource.flatMapSingle(
new Function<SimpleResource, Single<Data>>() {
@Override
public Single<Data> apply(SimpleResource resource) throws Exception {
return resource.data();
}
}
).toFlowable(BackpressureStrategy.BUFFER);