当前位置: 首页 > news >正文

青岛地产网站建设广州网站建设小程序开发

青岛地产网站建设,广州网站建设小程序开发,wordpress4.7.2写文章,企业推广方式有哪些map和flatMap的区别 首先说下map和flatMap的区别#xff0c;防止有对RxJava还不够熟悉的小伙伴 map的Function指定如何将A转为BflatMap的Function则指定如何将ObservableA转为ObservableBmap和flatMap最终的转换结果都是ObservableBflatMap由于可以…map和flatMap的区别 首先说下map和flatMap的区别防止有对RxJava还不够熟悉的小伙伴 map的Function指定如何将A转为BflatMap的Function则指定如何将ObservableA转为ObservableBmap和flatMap最终的转换结果都是ObservableBflatMap由于可以自己创建Observable因此更为强大灵活map比较简单 Observable生命周期测试 下面我们创建一个Observable并通过map和flatMap进行多次Observable转换 分别在正常流程和异常流程下测试map过程中各个Observable的生命周期执行流程 import io.reactivex.rxjava3.core.Observable;SuppressWarnings(all)public class RxJavaMapTest {public static class Action {public static String A() {System.out.println(A Execute);return A;}public static ObservableString B() {System.out.println(B Execute);return Observable.just(B);}public static ObservableString C() {System.out.println(C Execute);//throw new RuntimeException(Error);return Observable.just(C);}public static ObservableString D() {System.out.println(D Execute);return Observable.just(D);}public static ObservableString E() {System.out.println(E Execute);return Observable.just(E);}}public static void main(String[] args) {Observable.just().map(o - Action.A()).doOnSubscribe(aAction - {System.out.println(doOnSubscribe A);}).doOnNext(o - {System.out.println(doOnNext A1);}).doOnNext(o - {System.out.println(doOnNext A2);}).doOnError(e - {System.out.println(doOnError A);}).doOnComplete(() - {System.out.println(doOnComplete A);}).doFinally(() - {System.out.println(doOnFinally A);}).flatMap(o - Action.B()).doOnSubscribe(aAction - {System.out.println(doOnSubscribe B);}).doOnNext(o - {System.out.println(doOnNext B);}).doOnError(e - {System.out.println(doOnError B);}).doOnComplete(() - {System.out.println(doOnComplete B);}).doFinally(() - {System.out.println(doOnFinally B);}).flatMap(o - Action.C()).doOnSubscribe(o - {System.out.println(doOnSubscribe C);}).doOnNext(o - {System.out.println(doOnNext C);}).doOnError(e - {System.out.println(doOnError C);}).doOnComplete(() - {System.out.println(doOnComplete C);}).doFinally(() - {System.out.println(doOnFinally C);}).flatMap(o - Action.D()).doOnSubscribe(o - {System.out.println(doOnSubscribe D);}).doOnNext(o - {System.out.println(doOnNext D);}).doOnError(e - {System.out.println(doOnError D);}).doOnComplete(() - {System.out.println(doOnComplete D);}).doFinally(() - {System.out.println(doOnFinally D);}).flatMap(o - Action.E()).doOnSubscribe(o - {System.out.println(doOnSubscribe E);}).doOnNext(o - {System.out.println(doOnNext E);}).doOnError(e - {System.out.println(doOnError E);}).doOnComplete(() - {System.out.println(doOnComplete E);}).doFinally(() - {System.out.println(doOnFinally E);}).subscribe(o - System.out.println(doOnFinally X),e - System.out.println(doOnError X),() - System.out.println(doOnFinally X));System.out.println(Task Finish);}} 正常情况下的运行结果 doOnSubscribe A doOnSubscribe B doOnSubscribe C doOnSubscribe D doOnSubscribe E A Execute doOnNext A1 doOnNext A2 B Execute doOnNext B C Execute doOnNext C D Execute doOnNext D E Execute doOnNext E doOnFinally X doOnComplete A doOnComplete B doOnComplete C doOnComplete D doOnComplete E doOnFinally X doOnFinally E doOnFinally D doOnFinally C doOnFinally B doOnFinally A Task FinishC发生异常时的运行结果 doOnSubscribe A doOnSubscribe B doOnSubscribe C doOnSubscribe D doOnSubscribe E A Execute doOnNext A1 doOnNext A2 B Execute doOnNext B C Execute doOnFinally A doOnFinally B doOnError C doOnFinally C doOnError D doOnFinally D doOnError E doOnError X doOnFinally E Task Finish下面我们基于以上两次运行结果进行分析 如果有其它更深层次的疑问可以复制以上代码自己调整继续运行 正常流程下的生命周期流程 ABCDEX依次执行onSubscribeABCDE依次执行Function和onNextABCDEX依次执行onCompleteXEDCBD依次执行onFinally C发生异常时的生命周期流程 ABCDE依次执行onSubscribeAB依次执行Function和onNextC执行Function但触发ErrorAB不再执行onComplete依次执行onFinallyC执行onError和onFinallyD执行onError和onFinallyE执行onErrorX执行onErrorE执行onFinally 流程分析 执行subscribe方法之后B订阅AC订阅B。。。无异常时onFinally是按EDCBD顺序执行的说明Subscriber工作全部完成后Observable才会执行onFinallyC触发Error后AB都不执行onComplete说明Subscriber处理时发生错误Observable也会被视为工作未完成C触发Error后AB立刻执行onFinally说明Subscriber发生异常时Observable工作直接结束C触发Error后AB不执行onError但DE会执行onError说明Observable错误会引发Subscriber错误 多次map过程中异常处理方式可以总结为 发生异常时所有的OnSubscribe都会执行发生异常时所有的OnFinally都会执行发生异常时所有的OnComplete都不会执行发生异常时后续的OnError都会执行发生异常时后续的OnNext都不会执行发生异常时后续的Function都不会执行 多次map过程中Function的处理方式 多次map实际上是依次订阅的关系B订阅A再将自己的结果发射给Cmap方法只是创建了一个起到包装作用的Observable将所有回调对象和用于转换的Function保存了起来Function并不会立即执行而是等subscribe之后等到上个Observable处理成功才会执行 subscribe回调和doOn系列回调的区别 效果一样只是给Observable提供了不同的回调设置方式subscribe回调是设置给最后一个Observable的和前面代码没有任何关系不要复杂化一个Observable可以有多个回调它们都会生效并不会相互覆盖按设置先后顺序执行
http://www.dnsts.com.cn/news/104964.html

相关文章:

  • 化妆品 营销型网站孝感网站建设专家
  • 三亚本地网站建设wordpress主页不加index.php 打不开
  • 福永招聘网站建设正规挣钱最快的游戏
  • 学校网站制作素材怎么做类似美团的网站
  • 网站icp备案手续温州大型网站设计公司
  • 乔柘云智能建站南京seo按天计费
  • 网站建设 佛山网页设计欣赏熊出没
  • wordpress浮动留言板昆山优化外包
  • 网络游戏网站制作自己怎么开网店的步骤
  • 注册服务器网站哪个好seo分析seo诊断
  • 网站seo策划方案设计济南网站推广服务
  • 网站定制案例微安电力百度竞价开户3000
  • 哪个网站可以做自己的网页精品课网站建设 辽宁
  • 宝安第一网站上海建设银行网站转账记录
  • 网站建设服务合同范本网站制作价格与售后视频
  • 最简单的网站php连接wordpress
  • 旺道网站排名优化百度关键词挖掘查询工具
  • 保险网站模板沧州市网站
  • 腾讯风铃怎么做网站2015做外贸网站好做吗
  • 网站顶一下代码word可以制作网页吗
  • 珠海网站建设费用网站建设ps模板
  • 买到域名网站怎么做wordpress upload
  • 网站搭建要多少钱网站二级域名打不开
  • 新闻文章网站源码做铝板的网站
  • 网站开发合同 docwordpress2019中文下载
  • 怎样通过阿里云建设网站wordpress首页
  • 清远公司网站建设建设部监理资质申报网站
  • 购买马来网站域名石家庄网站优化招聘
  • 电商型网站开发多少钱注册安全工程师好考吗难度大吗
  • 凤岗仿做网站怎么查询网站备案服务商是哪个