android-如何在RxJava中链接任务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android-如何在RxJava中链接任务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1681字,纯文字阅读大概需要3分钟。
内容图文
我正在进行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 one rror(Throwable e) {
}
@Override
public void onComplete() {
//this method is not called by rxJava
}
});
使用此方法,一切正常,但是rxJava不会调用onComplete()方法.
请帮忙?
编辑-
每个任务都取决于先前的任务结果.一次应有一个任务.
解决方法:
假设我们有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-如何在RxJava中链接任务全部内容,希望文章能够帮你解决android-如何在RxJava中链接任务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。