RxSwift学习笔记9:amb/tabkeWhile/tabkeUntil/skipWhile/skipUntil
//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的更多相关文章
- RxSwift学习笔记7:buffer/window/map/flatMap/flatMapLatest/flatMapFirst/concatMap/scan/groupBy
1.buffer的基本使用 let publishSubject = PublishSubject<String>() //buffer 方法作用是缓冲组合,第一个参数是缓冲时间,第二个参 ...
- RxSwift学习笔记5:Binder
使用 Binder 创建观察者 //Observable序列(每隔1秒钟发出一个索引数) let scheduleObservable = Observable<Int>.interval ...
- RxSwift学习笔记2:Observable/生命周期/Event/oneNext/onError/onCompleted/
Observable 是 Rx 的根基 官网:http://reactivex.io/ github地址:https://github.com/ReactiveX/RxSwift Observabl ...
- RxSwift学习笔记1:RxSwift的编程风格
第一天:简单体验与RxSwift的编程风格 import UIKit//导入Rx相关框架 import RxSwift import RxCocoa struct Music { let name:S ...
- RxSwift学习笔记10:startWith/merge/zip/combineLatest/withLatestFrom/switchLatest
//startWith //该方法会在 Observable 序列开始之前插入一些事件元素.即发出事件消息之前,会先发出这些预先插入的事件消息 Observable.of(1,2,3) .startW ...
- 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 ...
- RxSwift学习笔记6:Subjects/PublishSubject/BehaviorSubject/ReplaySubject/Variable
// 从前面的几篇文章可以发现,当我们创建一个 Observable 的时候就要预先将要发出的数据都准备好,等到有人订阅它时再将数据通过 Event 发出去. // 但有时我们希望 Observabl ...
- RxSwift学习笔记4:disposeBag/scheduler/AnyObserver/Binder
let disposeBg = DisposeBag() //直接在创建 //在 subscribe 方法中创建 let ofObserval = Observable.of("a" ...
- RxSwift学习笔记3:生命周期/订阅
有了 Observable,我们还要使用 subscribe() 方法来订阅它,接收它发出的 Event. let observal = Observable.of("a",&qu ...
随机推荐
- 2Linux常用命令-Liunu就该这么学
常用系统工作命令 1.echo 用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]” 2.date date "+%Y-%m-%d %H:%M:%S" ...
- txt,csv,json互相转化
也没啥,记下来怕忘了.说明都在代码里面: 麻蛋,这个着色好难看 import csv import json #从txt变为csv student_txt=[]; with open("st ...
- 面向对象的css less 和sass
Css 初始化 reset.css 或者 normalise . Near.css兼容IE6以及现代浏览器. Oocss 也就是面向对象的css 面向对象是将cs ...
- jquery抓娃娃机代码
<html><head><title>jQuery抓娃娃机游戏代码 - 源码之家</title><meta name="content- ...
- df -i 100%时处理方法
晚上正在看文档的时候,运营突然打电话给我说游戏全炸了,都玩不了了: 我立马登上服务器,查看了下各服务是否正常运行,结果运行命令都报Unable to create lock file: No spa ...
- uvm_pre_do
https://blog.csdn.net/tingtang13/article/details/46535649 1.uvm_do 封装了一系列接口,封装越多,灵活性越差.所以增加了三个接口:pre ...
- ASP 错误捕捉,处理
Asp利用 On Error Resume Next捕捉异常,根据Err.Number判断是否有错误 注:On Error Goto 0取消捕捉异常 模板文件页面 <% Response.Buf ...
- HDU 5828 Rikka with Sequence(线段树区间加开根求和)
Problem DescriptionAs we know, Rikka is poor at math. Yuta is worrying about this situation, so he g ...
- 646. Maximum Length of Pair Chain 最长的链条长度
[抄题]: You are given n pairs of numbers. In every pair, the first number is always smaller than the s ...
- ios tableView的header高度不对
tableView的header高度不对,一般都是header是从xib加载出来的 第一步: 新建xib的时候选择的是View,当选择 Size 为 Freeform 时,view的约束就变成这样了, ...