广告:从前段时间开始接触RxSwift,跟着网上教程一点点的敲一些基础代码,慢慢地接触到越来越深的知识点,记录在此>>>。

RxSwift中Observable的各种创建方法:

//just()

let observable1 = Observable.just(5)
复制代码

//of() //该方法接收可变的参数,但是参数的类型必须相同 //虽然没显示地说明类型,但是swift也会自动推断类型

let observable2 = Observable.of("A", "B", "C")
复制代码

//from() //改方法需要接收一个数组类型的参数 //效果和上面的of相同

let observable3 = Observable.from(["A", "B", "C"])
复制代码

//empty() //创建一个空的observable序列

let observable4 = Observable<Int>.empty()
复制代码

//never() //创建一个永远不会停止发出Event的observable序列

let observable5 = Observable<Int>.never()
复制代码

//error() //创建一个不会做任何操作,而是直接发送一个错误的observable序列

enum MyError: Error {case Acase B
}
let observable6 = Observable<Int>.error(MyError.A)
复制代码

//range() //下面两个样例的结果相同

let observable7 = Observable.range(start: 1, count: 5)
let observable8 = Observable.of(1,2,3,4,5)
复制代码

//repeatElement() //创建一个可以无限发出给定元素的observable序列

let observable9 = Observable.repeatElement(1)
复制代码

//generate() //创建一个只有当所有条件都为true的时候才会给出动作的observable序列 //下面两个样例的结果相同

let observable10 = Observable.generate(initialState: 0, condition: {$0<=10}, iterate: {$0+2})
let observable11 = Observable.of(0,2,4,6,8,10)
复制代码

//create() //该方法接收一个block形式的参数,对每一个过来的订阅者进行处理

let observable12 = Observable<String>.create {observer in
//对订阅者发出next事件,且携带一个数据hello worldobserver.onNext("hello world")//对订阅者发出.complated事件observer.onCompleted()//一个订阅者会有一个Disposable类型的返回值,所以结尾要return一个Disposablereturn Disposables.create()}
//测试订阅
observable12.subscribe {print($0)
}
复制代码

//deferred() //创建一个observable工厂,通过传入一个block来执行延迟observable序列的创建行为,而这个block里就是真正的实例化序列的对象的地方。

var isOdd = truelet factory = Observable<Int>.deferred {isOdd = !isOddif isOdd {return Observable.of(1,3,5,7)}else {return Observable.of(2,4,6,8)}
}
//第一次订阅测试
factory.subscribe { (event) inprint("\(isOdd)", event)
}
//第二次订阅测试
factory.subscribe { (event) inprint("\(isOdd)", event)
}
复制代码

//interval() //创建的observable序列每隔一段时间会发出一个索引数的元素,而且会一直发送下去 //下面方法每隔1秒发送一次,并且在主线程

let observable13 = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
observable13.subscribe { (event) inprint(event)
}
复制代码

//timer() //5秒后发出唯一一个元素0

let observable14 = Observable<Int>.timer(5, scheduler: MainScheduler.instance)
observable14.subscribe { (event) inprint(event)
}
复制代码

//5秒后创建一个序列,每隔1秒产生一个元素

let observable15 = Observable<Int>.timer(5, period: 1, scheduler: MainScheduler.instance)
observable15.subscribe { (event) inprint(event)
}
复制代码

RxSwift中Observable的各种创建方法相关推荐

  1. 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法

    Epoch概念简介 相信很多人第一次接触epoch时,都会有疑惑,这个词在EEG中到底指的是什么. 下面将详细说明一下. 从连续的脑电图信号中提取一些特定时间窗口的信号,这些时间窗口可以称作为epoc ...

  2. Python-EEG工具库MNE中文教程(2)-MNE中数据结构Epoch及其创建方法

    目录 Epoch概念简介 a. 读取fif文件创建Epoch对象 b. 从头创建Epoch对象 案例1 案例2 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 ...

  3. java中executorservice_java中ExecutorService创建方法总结

    在对线程进行控制时,Executor虽然能够对其进行管理,但是缺少终止的功能,所以我们要用到Executor的进阶方法ExecutorServic来处理.ExecutorServic也是一种接口,相比 ...

  4. easyui 调用dialog中的方法_SolidWorks中标准件库的创建及调用方法

    在使用SolidWorks进行产品设计时,常用的标准件(如螺栓.螺母.垫圈等)通常可以在安装了SolidWorksToolbox插件后调出使用,而许多标准件在Toolbox并不存在,不能从插件中直接调 ...

  5. samba服务器新建文件权限,Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析...

    Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析 发布时间:2011-01-04 19:10:00   作者:佚名   我要评论 本文是基于ubuntu桌面版进行操作说 ...

  6. 前端:JS/25/DOM官方定义,DOM分类,HTML节点树(节点关系,节点类型,),核心DOM中公共的属性和方法(节点访问,查找DOM节点,节点属性,节点的创建,追加和删除)

    DOM官方定义 DOM,Document Object Model,文档对象模型,我们可以把网页中的所有"东西"看成是对象": DOM的官方定义:DOM可以使用脚本,动态 ...

  7. 关于Java单例模式中懒汉式和饿汉式的两种类创建方法

    一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...

  8. linux下的定时工具有哪些,Linux中使用crond工具创建定时任务的方法

    前言 crond是一个linux下的定时执行工具(相当于windows下的scheduled task),可以在无需人工干预的情况下定时地运行任务.crond工具提供crontab命令来设置定时任务, ...

  9. 调用iframe中的js方法_SolidWorks中标准件库的创建及调用方法

    在使用SolidWorks进行机械设计时,常用的标准件(如螺栓.螺母.垫圈等)通常可以在安装了SolidWorksToolbox插件后调出使用,而许多标准件在Toolbox并不存在,不能从插件中直接调 ...

最新文章

  1. jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别
  2. 华为实验台ENSP安装与使用
  3. Unrecognized option: -javaagent
  4. 如何处理使用 SAP UI5 消费真实的 OData 服务时遇到的跨域问题
  5. java form的时间格式_SpringMvc接收日期表单提交,自动转换成Date类型方法
  6. DataGrid控件(可以实现不刷新增加删除等操作)
  7. ATT汇编针对x86指令集格式
  8. MySQL学习十四创建和操纵表
  9. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作3D 立体图片动画效果~~适合初学者~超简单~ |前端开发|IT软件
  10. 信息安全管理体系(ISMS)
  11. 2020年最新-Java基础面试题
  12. 【渝粤教育】广东开放大学 跨文化商务沟通 形成性考核 (42)
  13. 学习汇报9.26-9.28
  14. java 动漫画图_初学画画怎么把动漫线条画好?
  15. 无需排队!NewBing已向全球个人开放,教程一篇就够了
  16. unity当前项目里面AssetBundle和加载的方法总结
  17. 快手分身多开黑屏脚本
  18. php微信自动回复开发,PHP微信开发之文本自动回复
  19. 让你的终端更漂亮——MAC OS 终端的设置
  20. 我读 《国富论》 - 亚当 · 斯密 / 论资本利润

热门文章

  1. 2950交换机简明配置维护手册
  2. oracle还原数据库及遇到的问题
  3. [转]简析 IOS 程序图标的设计
  4. 数据流重导向 -- 第11章   认识与学习 BASH
  5. 使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试
  6. Gmail最新功能实测:离线版上线增加手势(多图)
  7. Prometheus+Grafana可视化监控SpringBoot项目
  8. “父亲项目”走进澳洲校园 助父子建立联系
  9. 6.4. Pirum is a simple PEAR Channel Server Manager
  10. .NET下载文件报错System.UnauthorizedAccessException的解决方法