是否可以将像Single这样的observable转换为Single?我相信运算符compose()用于此目的,但我在如何实现它时迷失了
在下面的代码片段中可以更清楚地看到我想要实现的目标。
@Override
public Single<SystemDefaults> getSystemDefaults() {
SystemDefaults systemDefaults = new SystemDefaults();
return systemDao.getRoles().compose((SingleTransformer<List<Role>, SystemDefaults>) upstream -> {
//WHAT SHOULD I DO HERE?
});
}
我是RxJava(Android)的新手,所以我在这里很丢失。
答案 0 :(得分:1)
是的,操作员正在查看它的构成,并且它用于从先前的可观察/单个变换可观察/单个。
这是一个如何将Integer observable转换为String observable的示例。
Observable.Transformer<Integer, String> transformIntegerToString() {
return observable -> observable.map(String::valueOf);
}
/**
* In this example we use a transformer to get the Integer item emitted and transform to String
*/
@Test
public void observableWithTransformToString() {
Observable.just(1)
.map(number -> {
System.out.println("Item is Integer:" + Integer.class.isInstance(number));
return number;
})
.compose(transformIntegerToString())
.subscribe(number -> System.out.println("Item is String:" + (String.class.isInstance(number))));
}
您可以在此处看到另一个示例,如何将其更改为另一个线程中的另一个observable。 https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/transforming/ObservableCompose.java
答案 1 :(得分:1)
您需要map
运算符。 Map
会将Observable
s(或Single
s Maybe
s)中的每个项目移除,并将其转换为其他值:
Observable.just(1) // Start emitting Integers
.map(number -> number.toString()}) // Transform it to String
.subscribe(someString -> System.out.println(someString.getClass())); // Receive an String