如何将 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);
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);