如何在 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())
);
希望对您有所帮助。
我正在处理 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())
);
希望对您有所帮助。