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 ...
随机推荐
- Arthas - 开源的java诊断工具,非常有用
常用命令 help 查看帮助 help COMMAND 查看指定命令的详细帮助 COMMAND -h 查看指定命令的详细帮助 double tab 查看支持的所有命令 dashboard 查看线程JV ...
- c+多态的本质:编译器维护了类型信息同时插入了解释执行机制
Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: Fi ...
- luogu_3645: 雅加达的摩天楼
雅加达的摩天楼 题意描述: 有\(N\)座摩天楼,从左到右依次编号为\(0\)到\(N-1\). 有\(M\)个信息传递员,编号依次为\(0\)到\(M-1\).编号为i的传递员最初在编号为\(B_i ...
- 8-网页,网站,微信公众号基础入门(使用Python程序实现微信token验证)
https://www.cnblogs.com/yangfengwu/p/11062034.html 设置一下IP白名单: 填写自己的服务器的IP地址 是不是不可以哈,有多少人都会入这个坑.... ...
- 套接字编程简介: IPV4套接字地址结构/ 通用套接字地址结构/ IPV6套接字地址结构/新通用套接字地址结构
IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中. struct in_addr { in_addr_t ...
- CCF 201909-5 城市规划
试题编号: 201909-5 试题名称: 城市规划 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 几乎是Gym102222G的原版,详解见上一篇博文 /* 贡献+树形dp+01背包 * ...
- 第04组alpha冲刺(2/4)
队名:斗地组 组长博客:地址 作业博客:Alpha冲刺(2/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.收集各个组员的进度 2.写博客 展示GitHub当日代码/文档签入记录: 接下 ...
- 灰度图像--图像分割 Prewitt算子
学习DIP第45天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...
- SVN cornerstone Commit\Update 提示xxx is already Locked解决方法
点击菜单栏“working copy” 点“clean”: 或者,如下图: 右击,点击“clean”,问题解决.
- Flutter之网络请求
Flutter之网络请求 一,介绍与需求 1.1,介绍 1,http一个可组合的,基于Future的库,用于发出HTTP请求.包含一组高级功能和类,可轻松使用HTTP资源.它与平台无关,可以在命令行和 ...