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

网站建设20推广世界500强企业的标准是什么

网站建设20推广,世界500强企业的标准是什么,网站运营推广难做吗,湛艺建设集团网站map和flatMap的区别 首先说下map和flatMap的区别&#xff0c;防止有对RxJava还不够熟悉的小伙伴 map的Function指定如何将A转为BflatMap的Function则指定如何将Observable<A>转为Observable<B>map和flatMap最终的转换结果都是Observable<B>flatMap由于可以…

map和flatMap的区别

首先说下map和flatMap的区别,防止有对RxJava还不够熟悉的小伙伴

  • map的Function指定如何将A转为B
  • flatMap的Function则指定如何将Observable<A>转为Observable<B>
  • map和flatMap最终的转换结果都是Observable<B>
  • flatMap由于可以自己创建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 Observable<String> B() {System.out.println("B Execute");return Observable.just("B");}public static Observable<String> C() {System.out.println("C Execute");//throw new RuntimeException("Error");return Observable.just("C");}public static Observable<String> D() {System.out.println("D Execute");return Observable.just("D");}public static Observable<String> 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 Finish

C发生异常时的运行结果

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依次执行onSubscribe
  • ABCDE依次执行Function和onNext
  • ABCDEX依次执行onComplete
  • XEDCBD依次执行onFinally

C发生异常时的生命周期流程

  • ABCDE依次执行onSubscribe
  • AB依次执行Function和onNext
  • C执行Function,但触发Error
  • AB不再执行onComplete,依次执行onFinally
  • C执行onError和onFinally
  • D执行onError和onFinally
  • E执行onError
  • X执行onError
  • E执行onFinally

流程分析

  • 执行subscribe方法之后,B订阅A,C订阅B。。。
  • 无异常时,onFinally是按EDCBD顺序执行的,说明Subscriber工作全部完成后,Observable才会执行onFinally
  • C触发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,再将自己的结果发射给C
  • map方法只是创建了一个起到包装作用的Observable,将所有回调对象,和用于转换的Function保存了起来
  • Function并不会立即执行,而是等subscribe之后,等到上个Observable处理成功,才会执行

subscribe回调和doOn系列回调的区别

  • 效果一样,只是给Observable提供了不同的回调设置方式
  • subscribe回调是设置给最后一个Observable的,和前面代码没有任何关系,不要复杂化
  • 一个Observable可以有多个回调,它们都会生效,并不会相互覆盖,按设置先后顺序执行
http://www.15wanjia.com/news/189554.html

相关文章:

  • 学校网站建设命名什么网站比较容易做
  • 台州黄岩网站建设wordpress默认文本编辑器
  • 食品网站模板下载天宫院网站建设
  • 公司网站集资网站开发人员犯法么在哪个网站可以免费制作简历
  • 重庆网站服务器建设推荐wordpress页面添加水印
  • 网站优化公司电话营销策划与运营的书
  • 高级网站开发工程师 证书sae建wordpress
  • 好的企业管理网站网站的思维导图怎么做
  • wordpress网站不稳定免费ppt模板免费
  • 网站开发地图板块浮动网站建设 中企动力长沙
  • 网站开发 安全合同大连html5网站建设
  • 学设计的素材网站自己做小程序商城
  • 营销型网站建设怎么样云主机租用
  • 网站建设需求模板下载资阳优化团队市场
  • 昌乐网站设计慕枫网站建设
  • 建设银行网站怎么查开户行wordpress 数据库 破解版
  • 做响应式网站设计做图怎么搞网络营销有哪些模式
  • 直接做那个视频网站北京seo公司优化网络可见性
  • 凡科建站免费版可以做什么360免费wifi不稳定
  • 企业网站代码htmlwordpress 扩展数据库
  • 网站的优化安顺seo
  • 专门做选择题的网站国家企业信用信息系统(全国)
  • 找项目网站线上投票链接制作
  • 高校网站建设需求分析报告正规网站建设公司多少钱
  • 高端网站推荐手机建站永久免费软件
  • wordpress免费版能加标签seo关键词排名优化报价
  • 网站首页权重电子产品设计
  • 国外美容院网站佛山做网站格
  • 如何建设学校的微网站网站建设网络推广平台
  • 3d建站一些难以发现的网站