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 ...
随机推荐
- DES加密算法介绍(含例子)
http://www.hankcs.com/security/des-algorithm-illustrated.html DES(Data Encryption Standard)算法是世界上最常用 ...
- Android adb连接后adb devices显示unauthorized解决办法
adb链接手机后,显示unauthorized.原因是命令所在目录不对,这个adb devices命令是在夜神模拟器目录下执行的,所以出现该问题,切换目录后解决: 如果切换目录后仍然不行:重启adb. ...
- django云端留言板
1.创建应用 django-admin startproject cloudms cd cloudms python manage.py startapp msgapp 2.创建模板文件 在cloud ...
- Elasticsearch 中的 ignore_above
检索超过ignore_above设定长度的字段后,无法返回结果
- scala简单的功能实现~weekone
以下是scala简单的入门题~ 1.⼀个数字如果为正数,则它的signum为1:如果是负数,怎么signum为-1:如果是0,则signum 为0.编写⼀个函数来计算这个值. object Test ...
- typename T::SubType * ptr;
#include <iostream> using namespace std; template<class T> class MyClass{ public: typena ...
- Game Based Learning: Why Does it Work?
Forty years of research[i] says yes, games are effective learning tools. People learn from games, an ...
- Reincarnation HDU - 4622 (后缀自动机)
Reincarnation \[ Time Limit: 3000 ms\quad Memory Limit: 65536 kB \] 题意 给出一个字符串 \(S\),然后给出 \(m\) 次查询, ...
- Xamarin.Forms之XAML
官网参考 XAML基础知识 XAML(eXtensible Application Markup Language)可扩展应用程序标记语言,允许开发者在Xamarin.Forms应用中采用标记而不是代 ...
- apache-maven安装
1.下载maven 网址:http://maven.apache.org 2.下载maven和安装 由于最新版的可能会有问题,我选择下载旧版本 一般都下载二进制的zip文件 解压后文件夹apache- ...