如何在 RxJava 中链接任务

How to chain tasks in RxJava

我正在处理 android 应用程序注册,我需要在其中一项一项地执行多项任务

任务 1
任务2
任务 3

我想一个接一个地链接这些任务,如果一个任务失败,整个过程应该失败..

我想用 Rxjava 解决这个问题谁能告诉我如何用 rxJava 实现这个。


(我已经浪费了 5 个小时但没有找到解决方案,也是 RxJava 的新手)

我试过的

Observable.merge(task1,task2,task3).subscribe(new Observer<DataError>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(DataError dataError) {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {
             //this method is not called by rxJava
            }
        });

使用此方法一切正常,但 rxJava 未调用 onComplete() 方法。

求助~

编辑-
每个任务都依赖于上一个任务result.and一次应该有一个任务。

假设我们有 3 个任务。从给定的整数数组中,找到偶数,将每个偶数乘以 10,将每个数除以 2

//A stream of observable to find even numbers
private Observable<Integer> findEven(Integer number) {
    return Observable
        .just(number)
        .filter(data -> data % 2 == 0);
}

//A stream of observable to multiply each number with 10
private Observable<Integer> multiplyBy10(Integer evenNumber) {
    return Observable.just(evenNumber).map(data -> data * 10);
}

//A stream of observable to divide each number with 2
private Observable<Integer> divideBy2(Integer evenNumber) {
    return Observable.just(evenNumber).map(data -> data / 2);
}

那么,我们如何链接这个任务?

Observable
    .just(1, 2, 3, 4, 5, 6, 7, 8)
    //find even numbers
    .flatMap(num -> findEven(num))
    //Now multiply each even number by 10
    .flatMap(num -> multiplyBy10(num))
    //Now to each number divide 2 
    .flatMap(num -> divideBy2(num))
    .subscribe(
        // result: 10, 20, 30, 40
        result -> Log.v("", "result: " + result),
        error -> Log.e("", error.getMessage())
    );

希望对您有所帮助。