//amb基本介绍
//当传入多个 Observables 到 amb 操作符时,它将取第一个发出元素或产生事件的 Observable,然后只发出它的元素。
//并忽略掉其他的 Observables。 let psubject0 = PublishSubject<Int>()
let psubject1 = PublishSubject<Int>()
let psubject2 = PublishSubject<Int>() psubject0.amb(psubject1).amb(psubject2).subscribe(onNext: {print($0)}).disposed(by: disposeBag) psubject0.onNext(1)
psubject1.onNext(10)
psubject2.onNext(100) psubject0.onNext(2)
psubject1.onNext(20)
psubject2.onNext(200)
/*
1
2
*/ print("\n")
//tabkeWhile:该方法依次判断 Observable 序列的每一个值是否满足给定的条件。 当第一个不满足条件的值出现时,它便自动完成。
Observable.of(1,2,3,4,5).takeWhile({$0<4}).subscribe(onNext: {print($0)}).disposed(by: disposeBag) print("\n")
//除了订阅源 Observable 外,通过 takeUntil 方法我们还可以监视另外一个 Observable, 即 notifier。
//如果 notifier 发出值或 complete 通知,那么源 Observable 便自动完成,停止发送事件。
psubject1.takeUntil(psubject2).subscribe ( onNext:{print($0)}).disposed(by: disposeBag)
psubject1.onNext(1)
psubject1.onNext(2)
psubject1.onNext(3)
//停止接收消息
psubject2.onNext(999)
psubject1.onNext(4)
psubject1.onNext(5)
psubject1.onNext(6)
/*
1
2
3
*/ print("\n")
//skipWhile:
//该方法用于跳过前面所有满足条件的事件。
//一旦遇到不满足条件的事件,之后就不会再跳过了。
Observable.of(1,2,3,4,5).skipWhile({$0<4}).subscribe(onNext:{print($0)}).disposed(by: disposeBag)
/*
4
5
*/ print("\n")
//skipUntil:
//同上面的 takeUntil 一样,skipUntil 除了订阅源 Observable 外,通过 skipUntil 方法我们还可以监视另外一个 Observable, 即 notifier 。
//与 takeUntil 相反的是。源 Observable 序列事件默认会一直跳过,直到 notifier 发出值或 complete 通知。
psubject1.skipUntil(psubject2).subscribe(onNext:{print($0)}).disposed(by: disposeBag)
psubject1.onNext(1)
psubject1.onNext(2)
psubject1.onNext(3)
//停止接收消息
psubject2.onNext(999)
psubject1.onNext(4)
psubject1.onNext(5)
psubject1.onNext(6)
/*
4
5
6
*/

  

RxSwift学习笔记9:amb/tabkeWhile/tabkeUntil/skipWhile/skipUntil的更多相关文章

  1. RxSwift学习笔记7:buffer/window/map/flatMap/flatMapLatest/flatMapFirst/concatMap/scan/groupBy

    1.buffer的基本使用 let publishSubject = PublishSubject<String>() //buffer 方法作用是缓冲组合,第一个参数是缓冲时间,第二个参 ...

  2. RxSwift学习笔记5:Binder

    使用 Binder 创建观察者 //Observable序列(每隔1秒钟发出一个索引数) let scheduleObservable = Observable<Int>.interval ...

  3. RxSwift学习笔记2:Observable/生命周期/Event/oneNext/onError/onCompleted/

     Observable 是 Rx 的根基 官网:http://reactivex.io/ github地址:https://github.com/ReactiveX/RxSwift Observabl ...

  4. RxSwift学习笔记1:RxSwift的编程风格

    第一天:简单体验与RxSwift的编程风格 import UIKit//导入Rx相关框架 import RxSwift import RxCocoa struct Music { let name:S ...

  5. RxSwift学习笔记10:startWith/merge/zip/combineLatest/withLatestFrom/switchLatest

    //startWith //该方法会在 Observable 序列开始之前插入一些事件元素.即发出事件消息之前,会先发出这些预先插入的事件消息 Observable.of(1,2,3) .startW ...

  6. RxSwift学习笔记8:filter/distinctUntilChanged/single/elementAt/ignoreElements/take/takeLast/skip/sample/debounce

    //filter:该操作符就是用来过滤掉某些不符合要求的事件. Observable.of(1,2,3,4,5,8).filter({ $0 % 2 == 0 }).subscribe { (even ...

  7. RxSwift学习笔记6:Subjects/PublishSubject/BehaviorSubject/ReplaySubject/Variable

    // 从前面的几篇文章可以发现,当我们创建一个 Observable 的时候就要预先将要发出的数据都准备好,等到有人订阅它时再将数据通过 Event 发出去. // 但有时我们希望 Observabl ...

  8. RxSwift学习笔记4:disposeBag/scheduler/AnyObserver/Binder

    let disposeBg = DisposeBag() //直接在创建 //在 subscribe 方法中创建 let ofObserval = Observable.of("a" ...

  9. RxSwift学习笔记3:生命周期/订阅

    有了 Observable,我们还要使用 subscribe() 方法来订阅它,接收它发出的 Event. let observal = Observable.of("a",&qu ...

随机推荐

  1. linux 查看文件显示行号

    1.用vi或vim打开文件显示行号: 显示当前行号:  :nu 显示所有行号:  :set nu 2.设置服务器显示行号 2.1编辑~/.vimrc文件,在该文件中加入 set nu 2.2在UBUN ...

  2. Android开发中常见的设计模式(三)——观察者模式

    先看下这个模式的定义. 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新 先来讲几个情景. 情景1:有一种短信服务,比如天气预报服务,一旦你订阅 ...

  3. Vue watch的高级用法

    <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text& ...

  4. 项目(五)jumpserver企业开源跳板机搭建

    跳板机是什么?跳板机是运维堡垒主机的另个称呼.作为技术或者运维人员应该不会陌生.企业为了服务器的安全,通常所有的ssh连接都是通过跳板机来完成,以便于对ssh连接进行验证和管理. 接下来,我来讲述一下 ...

  5. 定时任务 spring @Scheduled注解

    使用spring @Scheduled注解执行定时任务: 运行!!! 关于Cron表达式(转载) 表达式网站生成: http://cron.qqe2.com/  直接点击 cronExpression ...

  6. Zabbix安装部署(CentOS系统下)

    zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统 ...

  7. 《Java程序设计》第二周学习总结(一)

    教材学习内容总结 标识符.关键字 基本数据类型 类型转换运算 输入.输出数据 数组 教材学习中的问题和解决过程 问题1:在创建vim并编写完成后出现以下情况 问题1解决方案:打开虚拟机的文件目录,发现 ...

  8. Python开发——函数【基础】

    函数的定义 以下规则 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符 ...

  9. BootStrap初始

    序言 什么是Bootstrap Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. Bootstrap是 ...

  10. RNA提取和建库流程对mRNA-Seq的影响

    RNA提取和建库流程对mRNA-Seq的影响 已有 10460 次阅读 2014-8-14 14:21 |个人分类:转录组测序|系统分类:科研笔记|关键词:转录组测序,RNA-Seq,,链特异性RNA ...