Operation之其他实用操作符
delay
- 该操作符会将 Observable 的所有元素都先拖延一段设定好的时间, 然后才将他们发送出来
Observable.of(1,2,3,4)
.delay(5, scheduler: MainScheduler.instance)
.subscribe(onNext: { print($0) })
.disposed(by: bag)

delaySubscription
- 该操作符可以进行延时订阅. 即经过所设定的时间后, 才对Observable进行订阅操作
Observable.of(1,2,3,4)
.delaySubscription(3, scheduler: MainScheduler.instance)
.subscribe(onNext: { print($0) })
.disposed(by: bag)

materialize
- 该操作符可以将序列产生的事件, 转换成元素
- 通常一个有限的Observable将产生0个或者多个onNext事件, 最后产生一个onCompleted或者onError事件. 而materialize操作符会将Observable产生的这些事件全部转换成元素, 然后发送出来
Observable.of(1,2,3,4)
.materialize()
.subscribe(onNext: { print($0) })
.disposed(by: bag)

dematerialize
- 该操作符的作用和materialize正好相反, 它可以将materialize转换后的元素还原
Observable.of(1,2,3,4)
.materialize()
.dematerialize()
.subscribe(onNext: { print($0) })
.disposed(by: bag)

timeout
- 使用该操作符可以设置一个超时时间. 如果源Observable在规定时间内没有发生任何元素, 就产生一个超时的error事件
let times = [
["value": 1, "time": 0],
["value": 2, "time": 0.5],
["value": 3, "time": 1.0],
["value": 4, "time": 1.5],
["value": 5, "time": 5],
["value": 6, "time": 6]
]
Observable.from(times)
.flatMap { item in
return Observable.of(Int(item["value"]!))
.delaySubscription(Double(item["time"]!), scheduler: MainScheduler.instance)
}
.timeout(2, scheduler: MainScheduler.instance) // 超过2秒没有发出元素, 则产生error事件
.subscribe(onNext: { print($0) }, onError: {print($0)})
.disposed(by: bag)

Operation之其他实用操作符的更多相关文章
- Operation之算数&聚合操作符
toArray 该操作符先把一个序列转成一个数组, 并作为一个单一的事件发送, 然后结束 Observable.of(1,2,3,4) .toArray() .subscribe(onNext: { ...
- PHP合并数组保留key值
PHP合并数组,键值不变 尝试了好几个合并数组的函数, 但是都是把key值重置, 导致key值丢失(因为key值是要用到的) 大大说, 最好用数组的相关函数, 网上随意找了下, 还是没找到. 因为 ...
- Findbugs异常总汇
FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查 ...
- findbugs规则
FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查 ...
- ORACLE官网JAVA学习文档
Trails Covering the Basics 1 Getting Started 1.1 The Java Technology Phenomenon 1.1.1 About the Ja ...
- FindBugs报错
FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查 ...
- 细数JS中实用且强大的操作符&运算符
目录 1,前言 2,代码+应用 2.1,短路运算符 || 2.2,短路运算符 && 2.3,零合并操作符 ?? 2.4,可选链操作符 ?. 2.5,位运算符 & 和 | 2.6 ...
- QList介绍(QList比QVector更快,这是由它们在内存中的存储方式决定的。QStringList是在QList的基础上针对字符串提供额外的函数。at()操作比操作符[]更快,因为它不需要深度复制)非常实用
FROM:http://apps.hi.baidu.com/share/detail/33517814 今天做项目时,需要用到QList来存储一组点.为此,我对QList类的说明进行了如下翻译. QL ...
- Operation之条件和布尔操作符
amb 当传入多个Observable到amb操作符时, 他将取第一个发生元素或产生事件的Observable, 然后只发出他的元素. 并且忽略其他的Observable let subject191 ...
随机推荐
- (十三)Kubernetes Dashboard
Dashboard概述 Github地址 Dashboard是Kubernetes的Web GUI,可用于在Kubernetes集群上部署容器化应用.应用排障.管理集群本身及附加的资源等.常用于集群及 ...
- Linux学习23-Xftp上传文件显示乱码问题
前言 当我们在windows新建一个文件,里面有中文时,使用Xftp上传到linux服务器上,会出现乱码问题. Windows的默认编码为GBK Linux的默认编码为UTF-8 Xftp上传文件乱码 ...
- Win10上的Docker应用:Docker-compose(容器编排)
阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) 前言: 昨天完成了Docker入门示例(Docker应用:Hello World),示 ...
- 【Android Studio】Gradle
Plugin version Required Gradle version 1.0.0 - 1.1.3 2.2.1 - 2.3 1.2.0 - 1.3.1 2.2.1 - 2.9 1.5.0 2.2 ...
- hive中删除表的错误Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException
hive使用drop table 表名删除表时报错,return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException 刚 ...
- UI的编程学本质
一.UI是数据的组织方式.展示及连接 UI模块--数据单元: 链接---数据单元间的联系: 相对链接-数据结构的树.链表: 绝对链接-大的模块级别的切换: 二.UI的IO学本质 屏幕.键盘 将信息输出 ...
- Longest Common Substring II SPOJ - LCS2 (后缀自动机)
Longest Common Substring II \[ Time Limit: 236ms\quad Memory Limit: 1572864 kB \] 题意 给出\(n\)个子串,要求这\ ...
- 8259A的初始化(单片)
1.单片8259A的初始化流程图: 在单片的初始化中不需要ICW3,因为ICW3是指明主片和从片的连接情况的. 2.程序解析: (1)ICW1 MOV AL,13H (2)ICW2 MOV AL,08 ...
- [Zjoi2006]三色二叉树(bzoj1864)(洛谷2585)题解
原题地址:https://www.luogu.org/problemnew/show/P2585 题目大意:可以把一个节点染成三种颜色,父节点和两个子节点(可以有一个)颜色不能相同.求最多(少)能有多 ...
- 洛谷P2580 于是他错误的点名开始了 题解
qwq!为什么!木有非结构体非指针的题解怎么阔以!所以, 我来辽~咻咻咻~ 题面 来分析, 我们可以先建一棵树,来存储整个名单, 然后再判断 ; i <= n; i++) { root = ; ...