Operation之条件和布尔操作符
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之条件和布尔操作符的更多相关文章
- RxJava2实战---第六章 条件操作符和布尔操作符
RxJava2实战---第六章 条件操作符和布尔操作符 RxJava的条件操作符主要包括以下几个: amb():给定多个Observable,只让第一个发射数据的Obsrvable发射全部数据. de ...
- C# 使用布尔操作符
布尔操作符(Boolean operator)是求值结果要么为true,要么为false的一种操作符.C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它使用感叹号(!)来表示. ...
- Javascript 布尔操作符总结
在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了.在像javascript这样弱类型语言更有其妙用,让我们 ...
- js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则
最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅 ...
- ECMAScript布尔操作符
在ECMAScript中提供了Boolean()转换函数以及三个布尔操作符,这三个布尔操作符分别为逻辑非.逻辑与.逻辑或,这三个操作符通常用作于某些值的求反,比较模式等.学好这一点知识也非常的重要,奠 ...
- JavaScript操作符(布尔操作符、乘性操作符和加性操作符)
布尔操作符 布尔操作符用来测试两个值的关系,布尔操作符有三个,逻辑非(!).逻辑与(&&),逻辑或(||). 逻辑非由一个叹号(!)组成,可以应用于JavaScript任何值.逻辑非首 ...
- JavaScript布尔操作符
布尔操作符 逻辑与 (&&) 逻辑与操作可以应用于任何类型的操作数,当有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值 如果第一个操作数是对象,则返回第二个操作数 如果第二 ...
- ReactiveX 学习笔记(6)条件操作符
Conditional and Boolean Operators 本文的主题为处理 Observable 的条件和布尔操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操 ...
- RxJava中的doOnSubscribe默认运行线程分析
假设你对RxJava1.x还不是了解,能够參考以下文章. 1. RxJava使用介绍 [视频教程] 2. RxJava操作符 • Creating Observables(Observable的创 ...
随机推荐
- nfs实现k8s持久化
1. 部署nfs服务端 k8s-master 节点上搭建了 NFS 服务器 (1)安装nfs服务: yum install -y nfs-utils rpcbind vim /etc/exports ...
- VS Code + MinGW + Clang + OpenGL (vscode 配置 opengl环境)
vscode配置opengl环境会遇到一些问题,这里是在看了一些博文之后给出的一篇完整的可行的配置 首先,要配置C++环境,网上有很多完整的配置C++环境的教程,这里就引用一条 https://www ...
- jmeter中如何引用Java
通过source()获取java文件: vars.get,获取参数type_id的值
- 图像处理基本工具——Python 环境下的 Pillow( PIL )
由于笔者近期的研究课题与图像后处理有关,需要通过图像处理工具对图像进行变换和处理,进而生成合适的训练图像数据.该系列文章即主要记录笔者在不同的环境下进行图像处理时常用的工具和库.在 Python 环境 ...
- SparkStreaming 性能、稳定、容错与语义
怎样提高Spark Streaming的性能 1.创建多个接收器 待定:: 2.调节每一个batch interval的数据块的数量,其实就是调整上面第二个问题中提到的配置spark.stream ...
- oracle封装OracleHelper
1.Oracle 封装类 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- PHP - Filters
Retrieve the administrator password of this application. 对文件包含的介绍------------第一个链接需要谷歌 https://mediu ...
- MongoDB shell 2 副本集方法
rs.initiate() rs.addArb() rs.help() rs.printReplicationInfo() 查看到副本集操作日志 rs.remove() 减少副本集节点 r ...
- vue使用插件的流程
1.引入vue 2.引入插件 3.通过vue.use()调用 例子:使用router插件 import Vue from "vue"; import VueRouter from ...
- 同余and乘法逆元学习笔记
目录 数学符号 快速幂 方法一 方法二 同余 概念 同余的性质 乘法逆元 概念: 求逆元的方法 扩展欧几里得 快速幂法\(o(n*log(n))\) 递推法\(o(n)\) sjp大佬让我写同余那就只 ...