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

手机网站设计知识邀约网站怎么做请柬

手机网站设计知识,邀约网站怎么做请柬,网站调用flash,网络营销方式的利弊简要#xff1a;需求了解#xff1a;在使用 Rxjava 开发中#xff0c;经常有一些各种条件的操作 #xff0c;如比较两个 Observable 谁先发射了数据、跳过指定条件的 Observable 等一系列的条件操作需求#xff0c;那么很幸运#xff0c; Rxjava 中已经有了很多条件操作符…简要需求了解在使用 Rxjava 开发中经常有一些各种条件的操作 如比较两个 Observable 谁先发射了数据、跳过指定条件的 Observable 等一系列的条件操作需求那么很幸运 Rxjava 中已经有了很多条件操作符一起来了解一下吧。下面列出了一些Rxjava的用于条件操作符Amb给定两个或多个Observables它只发射首先发射数据或通知的那个Observable的所有数据。DefaultIfEmpty发射来自原始Observable的值如果原始 Observable 没有发射任何数据项就发射一个默认值。SwitchIfEmpty如果原始Observable没有发射数据时发射切换一个指定的Observable继续发射数据。SkipUntil丢弃原始 Observable 发射的数据直到第二个 Observable 发射了一个数据然后发射原始 Observable 的剩余数据。SkipWhile丢弃原始 Observable 发射的数据直到一个特定的条件为假然后发射原始 Observable 剩余的数据。TakeUntil发射来自原始 Observable 的数据直到第二个 Observable 发射了一个数据或一个通知。1. Amb给定两个或多个Observables它只发射首先发射数据或通知的那个Observable的所有数据。解析 对多个Observable进行监听首先发射通知(包括数据)的Observable将会被观察者观察发射这个Observable的所有数据。示例代码// 创建ObservableObservable delayObservable Observable.range(1, 5).delay(100, TimeUnit.MILLISECONDS); // 延迟100毫秒发射数据Observable rangeObservable Observable.range(6, 5);// 创建Observable的集合ArrayList list new ArrayList();list.add(delayObservable);list.add(rangeObservable);// 创建Observable的数组Observable[] array new Observable[2];array[0] delayObservable;array[1] rangeObservable;/*** 1. ambWith(ObservableSource extends T other)* 与另外一个Observable比较只发射首先发射通知的Observable的数据*/rangeObservable.ambWith(delayObservable).subscribe(new Consumer() {Overridepublic void accept(Integer integer) throws Exception {System.out.println(-- accept(1): integer);}});System.in.read();System.out.println(------------------------------------------------);/*** 2. amb(Iterable extends ObservableSource extends T sources)* 接受一个Observable类型的集合 只发射集合中首先发射通知的Observable的数据*/Observable.amb(list).subscribe(new Consumer() {Overridepublic void accept(Integer integer) throws Exception {System.out.println(-- accept(2): integer);}});System.in.read();System.out.println(------------------------------------------------);/*** 3. ambArray(ObservableSource extends T... sources)* 接受一个Observable类型的数组 只发射数组中首先发射通知的Observable的数据*/Observable.ambArray(array).subscribe(new Consumer() {Overridepublic void accept(Integer integer) throws Exception {System.out.println(-- accept(3): integer);}});System.in.read();输出-- accept(1): 6-- accept(1): 7-- accept(1): 8-- accept(1): 9-- accept(1): 10-------------------------------------------------- accept(2): 6-- accept(2): 7-- accept(2): 8-- accept(2): 9-- accept(2): 10-------------------------------------------------- accept(3): 6-- accept(3): 7-- accept(3): 8-- accept(3): 9-- accept(3): 102. DefaultIfEmpty发射来自原始Observable的值如果原始 Observable 没有发射数据项就发射一个默认值。解析 DefaultIfEmpty 简单的精确地发射原始Observable的值如果原始Observable没有发射任何数据正常终止(以 onCompleted 的形式) DefaultIfEmpty 返回的Observable就发射一个你提供的默认值。如果你需要发射更多的数据或者切换备用的Observable你可以考虑使用 switchIfEmpty 操作符 。示例代码/*** defaultIfEmpty(NotNull T defaultItem)* 如果原始Observable没有发射任何数据正常终止(以 onCompleted 的形式)* DefaultIfEmpty 返回的Observable就发射一个你提供的默认值defaultItem。*/Observable.create(new ObservableOnSubscribe() {Overridepublic void subscribe(ObservableEmitter emitter) throws Exception {emitter.onComplete(); // 不发射任何数据直接发射完成通知}}).defaultIfEmpty(No Data emitter!!!).subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe);}Overridepublic void onNext(String s) {System.out.println(-- onNext: s);}Overridepublic void onError(Throwable e) {System.out.println(-- onError: e);}Overridepublic void onComplete() {System.out.println(-- onComplete);}});输出-- onSubscribe-- onNext: No Data emitter!!!-- onComplete3. SwitchIfEmpty如果原始Observable没有发射数据时发射切换一个指定的Observable继续发射数据。解析 如果原始 Observable 没有发射数据时发射切换指定的 other 继续发射数据。示例代码/*** switchIfEmpty(ObservableSource other)* 如果原始Observable没有发射数据时发射切换指定的other继续发射数据*/Observable.create(new ObservableOnSubscribe() {Overridepublic void subscribe(ObservableEmitter emitter) throws Exception {emitter.onComplete(); // 不发射任何数据直接发射完成通知}}).switchIfEmpty(Observable.just(888)) // 如果原始Observable没有发射数据项默认发射备用的Observable发射数据项888.subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe);}Overridepublic void onNext(Integer integer) {System.out.println(-- onNext: integer);}Overridepublic void onError(Throwable e) {System.out.println(-- onError: e);}Overridepublic void onComplete() {System.out.println(-- onComplete);}});输出-- onSubscribe-- onNext: 888-- onComplete4. SkipUntil丢弃原始 Observable 发射的数据直到第二个 Observable 发射了一个数据然后发射原始 Observable 的剩余数据。示例代码/*** skipUntil(ObservableSource other)* 丢弃原始Observable发射的数据直到other发射了一个数据然后发射原始Observable的剩余数据。*/Observable.intervalRange(1, 10, 0, 500, TimeUnit.MILLISECONDS)// 丢弃2000毫秒的原始Observable发射的数据接受后面的剩余部分数据.skipUntil(Observable.timer(2000, TimeUnit.MILLISECONDS)).subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe);}Overridepublic void onNext(Long aLong) {System.out.println(-- onNext: aLong);}Overridepublic void onError(Throwable e) {System.out.println(-- onError: e);}Overridepublic void onComplete() {System.out.println(-- onComplete);}});System.in.read();输出-- onSubscribe-- onNext: 5-- onNext: 6-- onNext: 7-- onNext: 8-- onNext: 9-- onNext: 10-- onComplete5. SkipWhile丢弃原始 Observable 发射的数据直到一个特定的条件为假然后发射原始 Observable 剩余的数据。示例代码/*** skipWhile(Predicate super T predicate)* 丢弃原始 Observable 发射的数据直到函数predicate的条件为假然后发射原始Observable剩余的数据。*/Observable.intervalRange(1, 10, 0, 500, TimeUnit.MILLISECONDS).skipWhile(new Predicate() {Overridepublic boolean test(Long aLong) throws Exception {if (aLong 5) {return false; // 当原始数据大于5时发射后面的剩余部分数据}return true; // 丢弃原始数据项}}).subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe);}Overridepublic void onNext(Long aLong) {System.out.println(-- onNext: aLong);}Overridepublic void onError(Throwable e) {System.out.println(-- onError: e);}Overridepublic void onComplete() {System.out.println(-- onComplete);}});System.in.read();输出-- onSubscribe-- onNext: 6-- onNext: 7-- onNext: 8-- onNext: 9-- onNext: 10-- onComplete6. TakeUntil发射来自原始 Observable 的数据直到第二个 Observable 发射了一个数据或一个通知。6.1 takeUntil(ObservableSource other)TakeUntil 订阅并开始发射原始 Observable它还监视你提供的第二个 Observable。如果第二个 Observable 发射了一项数据或者发射了一个终止通知TakeUntil 返回的 Observable 会停止发射原始 Observable 并终止。解析 第二个Observable发射一项数据或一个 onError 通知或一个 onCompleted 通知都会导致 takeUntil 停止发射数据。示例代码// 创建Observable发送数字1~10每间隔200毫秒发射一个数据Observable observable Observable.intervalRange(1, 10, 0, 200, TimeUnit.MILLISECONDS);/*** 1. takeUntil(ObservableSource other)* 发射来自原始Observable的数据直到other发射了一个数据或一个通知后停止发射原始Observable并终止。*/observable.takeUntil(Observable.timer(1000, TimeUnit.MILLISECONDS)) // 1000毫秒后停止发射原始数据.subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe(1));}Overridepublic void onNext(Long aLong) {System.out.println(-- onNext(1): aLong);}Overridepublic void onError(Throwable e) {System.out.println(-- onError(1): e);}Overridepublic void onComplete() {System.out.println(-- onComplete(1));}});System.in.read();输出-- onSubscribe(1)-- onNext(1): 1-- onNext(1): 2-- onNext(1): 3-- onNext(1): 4-- onNext(1): 5-- onComplete(1)6.2 takeUntil(Predicate stopPredicate)每次发射数据后通过一个谓词函数来判定是否需要终止发射数据。解析 每次发射数据后通过一个谓词函数 stopPredicate 来判定是否需要终止发射数据如果 stopPredicate 返回 true 怎表示停止发射原始Observable后面的数据否则继续发射后面的数据。示例代码/*** 2. takeUntil(Predicate super T stopPredicate)* 每次发射数据后通过一个谓词函数stopPredicate来判定是否需要终止发射数据* 如果stopPredicate返回true怎表示停止发射后面的数据否则继续发射后面的数据*/observable.takeUntil(new Predicate() {Overridepublic boolean test(Long aLong) throws Exception { // 函数返回false则为继续发射原始数据true则停止发射原始数据if(aLong 5){return true; // 满足条件后停止发射数据}return false; // 继续发射数据}}).subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe(2));}Overridepublic void onNext(Long aLong) {System.out.println(-- onNext(2): aLong);}Overridepublic void onError(Throwable e) {System.out.println(-- onError(2): e);}Overridepublic void onComplete() {System.out.println(-- onComplete(2));}});System.in.read();输出-- onSubscribe(2)-- onNext(2): 1-- onNext(2): 2-- onNext(2): 3-- onNext(2): 4-- onNext(2): 5-- onNext(2): 6-- onComplete(2)7. TakeWhile发射原始Observable的数据直到一个特定的条件然后跳过剩余的数据。解析 发射原始 Observable 的数据直到 predicate 的条件为 false 然后跳过剩余的数据。示例代码// 创建Observable发送数字110每间隔200毫秒发射一个数据Observable observable Observable.intervalRange(1, 10, 0, 200, TimeUnit.MILLISECONDS);/*** takeWhile(Predicate predicate)* 发射原始Observable的数据直到predicate的条件为false然后跳过剩余的数据*/observable.takeWhile(new Predicate() {Overridepublic boolean test(Long aLong) throws Exception { // 函数返回值决定是否继续发射后续的数据if(aLong 5){return false; // 满足条件后跳过后面的数据}return true; // 继续发射数据}}).subscribe(new Observer() {Overridepublic void onSubscribe(Disposable d) {System.out.println(-- onSubscribe);}Overridepublic void onNext(Long aLong) {System.out.println(-- onNext: aLong);}Overridepublic void onError(Throwable e) {System.out.println(-- onError: e);}Overridepublic void onComplete() {System.out.println(-- onComplete);}});System.in.read();输出-- onSubscribe(1)-- onNext(1): 1-- onNext(1): 2-- onNext(1): 3-- onNext(1): 4-- onNext(1): 5-- onComplete(1)小结本节主要介绍了Rxjava条件操作符可以根据不同的条件进行数据的发射变换等相关行为。提示以上使用的Rxjava2版本: 2.2.12Rx介绍与讲解及完整目录参考Rxjava2 介绍与详解实例实例代码
http://www.zqtcl.cn/news/311338/

相关文章:

  • 广州品牌网站建设 优美wordpress 跳转页面
  • 成都专业的网站建设制作公司哪家好m3u8视频可以永久保存吗
  • 上海做兼职的网站如何在凡科建设网站
  • 沙朗镇做网站公司企业管理咨询师是干什么的
  • 起名网站建设商汇通网站
  • 网站开发费税率是多少钱建设小网站教程
  • 企业制作网站服务物联网应用有哪些
  • 中国建设网站银行个人做网站要注意什么条件
  • 莆田哪里有学做网站的wordpress可视化函数
  • 网站规划书500字上海金融网站制作网站制作公司好
  • 郑州网站制做钓鱼网站的公司
  • 网站域名授权怎么做以鹦鹉做头像的网站
  • 后端开发网站做一些什么WordPress能做门户网吗
  • 石家庄市住房和城乡建设厅网站好的企业型网站模板下载
  • 哈尔滨快速建站公司推荐网站刷流量会怎么样
  • 网站开发 顺德做新闻微网站有哪些
  • 如何阿里巴巴网站做推广苏州高新区建设局网站管网
  • 个人网站设计构思做汽车保养的网站
  • 在什么网站可以接国外的模具做中英文网站是怎么做的
  • 网站中的文字滑动怎么做的沈阳模板建站定制
  • 国内网站开发二手房网站开发背景
  • 电商网站建设与管理实践电商网站前端制作分工
  • 外贸公司怎么接订单网站编辑做seo好做吗
  • 科技企业网站建设珠海微信网站开发
  • 科凡网站建设小程序自己开发
  • 专门做金融的招聘网站wordpress 价格
  • 微商城网站建设信息定制程序网站
  • 电子政务网站开发餐饮品牌设计包括哪些
  • 深圳手机商城网站设计公司网站做会员用什么源码
  • 安康网站建设公司价格pathon做网站