RxJava:如何运行两个连续调用:第二个取决于第一个
我需要创建一个observable,其中2个基于改造的调用块按顺序运行。我知道我可以在一个观察者呼叫中运行第二个改装呼叫,但这将非常混乱。我将我的可观察代码与调用方放在一个单独的类中,它返回一个可观察代码。我希望将第一次调用的结果传递给第二次调用,然后在第二次调用完成后,将一个可观察的传递回调用类。(我使用的是Java 7,而不是Java 8)RxJava:如何运行两个连续调用:第二个取决于第一个,java,rx-java,observable,Java,Rx Java,Observable,我需要创建一个observable,其中2个基于改造的调用块按顺序运行。我知道我可以在一个观察者呼叫中运行第二个改装呼叫,但这将非常混乱。我将我的可观察代码与调用方放在一个单独的类中,它返回一个可观察代码。我希望将第一次调用的结果传递给第二次调用,然后在第二次调用完成后,将一个可观察的传递回调用类。(我使用的是Java 7,而不是Java 8) 公共类GetFollowing{ 公共可观测init(){ 返回可观察的。创建( 新的可观察到的。订阅(){ @凌驾 公共无效呼叫(用户如果该要求可以重
公共类GetFollowing{
公共可观测init(){
返回可观察的。创建(
新的可观察到的。订阅(){
@凌驾
公共无效呼叫(用户如果该要求可以重新表述如下:
您有两个要执行的方法,它们都返回Observable
s
在第一种方法的可观察的上发出的项目需要在出现时输入第二种方法
第二种方法的输出是一个可观察的
,它基于对第一种可观察的
项的一些计算
RxJava中现成的特性是您的解决方案。下面是一个简单的实现来帮助您
public static void main(String[] args) {
Observable<Integer> o1 = Observable.just(1, 2);
Observable<String> result = o1.flatMap(result1 -> Observable.just("Value is: "+result1));
result.subscribe(finalResult -> System.out.println("Final result: "+finalResult));
}
另一方面,如果第二个方法没有返回一个可观察的
,而是对发出的项执行一些操作,那么您可以使用map
实现相同的操作,请检查这正是您的情况。如果第一个可观察的抛出异常,则不会调用second,因为它会中断流和订阅者的操作sonError
回调将被触发。@Maxim Perfect,正是我想要的。第二个输出值不应该是:1??@AalapPatel你是对的。只是更新了代码以匹配输出。你能建议我吗?你的答案在这里不起作用
Observable< ArrayList<Media> > test;
Observable.concat(
Observable.create(
new Observable.OnSubscribe< ArrayList<User> >() {
@Override
public void call(Subscriber<? super ArrayList<User> > subscriber) {
}
}
),
test = Observable.create(
new Observable.OnSubscribe< ArrayList<Media> >() {
@Override
public void call(Subscriber<? super ArrayList<Media> > subscriber) {
}
}
)
);
return test;
public static void main(String[] args) {
Observable<Integer> o1 = Observable.just(1, 2);
Observable<String> result = o1.flatMap(result1 -> Observable.just("Value is: "+result1));
result.subscribe(finalResult -> System.out.println("Final result: "+finalResult));
}
Final result: Value is: 1
Final result: Value is: 2