amb

  • 当传入多个Observable到amb操作符时, 他将取第一个发生元素或产生事件的Observable, 然后只发出他的元素. 并且忽略其他的Observable
let subject191 = PublishSubject<Int>()
let subject192 = PublishSubject<Int>()
let subject193 = PublishSubject<Int>() subject191
.amb(subject192)
.amb(subject193)
.subscribe(onNext: { print($0) })
.disposed(by: bag) subject192.onNext(0)
subject191.onNext(50)
subject192.onNext(1)
subject193.onNext(101)
subject193.onNext(102)
subject191.onNext(51)
subject192.onNext(2)
subject193.onNext(103)

takeWhile

  • 该方法依次判断Observable序列的每一个值是否满足给定的条件. 当地一个不满足条件的值出现时, 他便自动完成
Observable.of(1,2,3,4,6,1,3,8,3,5,9)
.takeWhile {
$0 < 7
}
.subscribe(onNext: { print($0) })
.disposed(by: bag)

takeUntil

  • 除了订阅Observable外, 通过takeUntil方法我们还可以监视另外一个Observable, 即notifier
  • 如果notifier发出值或complete通知, 那么源Observable便自动完成, 停止发送事件
let source21 = PublishSubject<String>()
let notifier21 = PublishSubject<String>()
source21.takeUntil(notifier21)
.subscribe(onNext: { print($0) })
.disposed(by: bag) source21.onNext("a")
source21.onNext("b")
source21.onNext("c") notifier21.onNext("A") source21.onNext("d")
source21.onNext("e")
source21.onNext("f")

skipWhile

  • 该方法用于跳过前面所有满足条件的事件
  • 一旦遇到不满足的条件的事件, 之后就不会再跳过了
Observable.of(1,2,3,4,5,6,7)
.skipWhile{ $0 < 4 }
.subscribe(onNext: { print($0) })
.disposed(by: bag)

skipUntil

  • 同上面的takeUntil一样, skipUntil除了订阅源Observable外, 通过skipUntil方法我们还可以监视另外一个Observable, 即notifier
  • 与takeUntil相反的是. 源Observable序列事件默认会一直跳过, 知道notifier发出值或complete通知
let source32 = PublishSubject<Int>()
let notifier32 = PublishSubject<Int>()
source32.skipUntil(notifier32)
.subscribe(onNext: { print($0) })
.disposed(by: bag) source32.onNext(1)
source32.onNext(2)
source32.onNext(3) notifier32.onNext(11) source32.onNext(4)
source32.onNext(5) notifier32.onNext(12) source32.onNext(6)
source32.onNext(7)

Operation之条件和布尔操作符的更多相关文章

  1. RxJava2实战---第六章 条件操作符和布尔操作符

    RxJava2实战---第六章 条件操作符和布尔操作符 RxJava的条件操作符主要包括以下几个: amb():给定多个Observable,只让第一个发射数据的Obsrvable发射全部数据. de ...

  2. C# 使用布尔操作符

    布尔操作符(Boolean operator)是求值结果要么为true,要么为false的一种操作符.C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它使用感叹号(!)来表示. ...

  3. Javascript 布尔操作符总结

    在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了.在像javascript这样弱类型语言更有其妙用,让我们 ...

  4. js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则

    最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅 ...

  5. ECMAScript布尔操作符

    在ECMAScript中提供了Boolean()转换函数以及三个布尔操作符,这三个布尔操作符分别为逻辑非.逻辑与.逻辑或,这三个操作符通常用作于某些值的求反,比较模式等.学好这一点知识也非常的重要,奠 ...

  6. JavaScript操作符(布尔操作符、乘性操作符和加性操作符)

    布尔操作符 布尔操作符用来测试两个值的关系,布尔操作符有三个,逻辑非(!).逻辑与(&&),逻辑或(||). 逻辑非由一个叹号(!)组成,可以应用于JavaScript任何值.逻辑非首 ...

  7. JavaScript布尔操作符

    布尔操作符 逻辑与 (&&) 逻辑与操作可以应用于任何类型的操作数,当有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值 如果第一个操作数是对象,则返回第二个操作数 如果第二 ...

  8. ReactiveX 学习笔记(6)条件操作符

    Conditional and Boolean Operators 本文的主题为处理 Observable 的条件和布尔操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操 ...

  9. RxJava中的doOnSubscribe默认运行线程分析

    假设你对RxJava1.x还不是了解,能够參考以下文章. 1. RxJava使用介绍 [视频教程] 2. RxJava操作符   • Creating Observables(Observable的创 ...

随机推荐

  1. ELK快速入门(二)通过logstash收集日志

    ELK快速入门二-通过logstash收集日志 说明 这里的环境接着上面的ELK快速入门-基本部署文章继续下面的操作. 收集多个日志文件 1)logstash配置文件编写 [root@linux-el ...

  2. php享元模式(flyweight pattern)

    周日一大早,今天要送老婆孩子去火车站, 所以练代码要早点哈. <?php /* The flyweight pattern is about performance and resource r ...

  3. discuz x3.3排行首页图片显示更多的图片

    找到\source\include\misc\misc_ranklist_index.php文件,修改41行 $ranklist = getranklist_pictures_index(9); 为 ...

  4. 【Postgres】根据字段数据创建空间字段

    --添加空间字段 , ); --根据其他字段更新空间字段数据 update "GIS" b ) from "GIS" a where b."ID&qu ...

  5. Java-Eclipse-findbugs-sonar学习

    一.findbugs 和sonar的安装 可以通过Eclipse的Help-Eclipse marketplace中安装. 推荐:findbugs安装Help-install new Software ...

  6. SpringBoot配置ThreadPoolTaskExecutor

    package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframe ...

  7. Dart编译技术与平台

    Flexible compiler technology lets you run Dart code in different ways, depending on your target plat ...

  8. Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException 拒绝访问 / 出现了内部错误 c# – 当使用X509Certificate2加载p12/pfx文件时出现

    环境:iis/netcore 2.2 初始调用:X509Certificate2 certificate = new X509Certificate2(input.Path, CER_PASSWORD ...

  9. 《OKR工作法》| 一次说太多等于什么都没说

    在<OKR工作法>中,作者用汉娜和杰克一起创造TeaBee的故事来为我们讲解OKR可以解决的问题以及如何去实践OKR.给我印象最深的他们用OKR目标管理失败的时候埋怨这种管理方法是有问题的 ...

  10. java的多线程之入门

    一.java多线程基本概念 调用run():在主线程调用子线程的run()方法会中断主线程等到子线程执行完毕之后再执行主线程. 调用start():在主线程中执行子线程的start()后会与主线程同步 ...