
我正在进行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()方法.
请帮忙〜
编辑-
每个任务都取决于先前的任务结果.一次应有一个任务.最佳答案假设我们有3个任务.从给定的整数数组中,找到偶数,将每个偶数乘以10,将每个数除以2
//A stream of observable to find even numbersprivate Observable<Integer> findEven(Integer number) { return Observable .just(number) .filter(data -> data % 2 == 0);}//A stream of observable to multiply each number with 10private Observable<Integer> multiplyBy10(Integer evennumber) { return Observable.just(evennumber).map(data -> data * 10);}//A stream of observable to divIDe each number with 2private 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中链接任务 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)