RxSwift、RxBlocking、RxTest初尝试
在Android开发上,RxJava已经是非常重要的组成之一。最近在用Swift开发iOS应用,考虑在架构设计上使用RxSwift。
添加依赖
# Podfile use_frameworks! target 'YOUR_TARGET_NAME' do pod 'RxSwift', '~> 5' pod 'RxCocoa', '~> 5' pod 'RxBlocking', '~> 5' end # RxTest and RxBlocking make the most sense in the context of unit/integration tests target 'YOUR_TESTING_TARGET' do pod 'RxTest', '~> 5' end
创建 Observable
import RxSwift ... let observable = Observable<Int>.create { (observer) -> Disposable in observer.onNext(1) observer.onCompleted() return Disposables.create() }
定义 onError调用
struct MyError:Error { var message = "" init(message:String) { self.message = message } } let observable = Observable<Int>.create { (observer) -> Disposable in let error = MyError(message: "Test Error") observer.onError(error) return Disposables.create() }
subscribe
只定义一个回调
observable.subscribe({ it in print("onNext \(it.element)") })
定义onNext和onError
observable.subscribe(onNext: { it in print("onNext \(it)") },onError: { error in print((error as! MyError).message) })
定义onNext、onError和onCompleted
observable.subscribe(onNext: { it in print("onNext \(it)") },onError: { error in print((error as! MyError).message) },onCompleted: { })
RxBlocking
RxBlocking是RxSwift中另外一个单独的框架。跟RxTest一样,也需要进行pod引入框架,需要单独添加依赖。RxBlocking可以把RxSwift从异步响应变成同步,所以RxBlocking也多用来做单元测试。
pod 'RxBlocking'
import RxSwift import RxBlocking ... do{ let result = try observable.toBlocking().first() print("结果:\(result)") }catch{ print((error as! MyError).message) }
应用场景
比如我们使用RxSwift实现图片上传,在发布动态的时候需要先上传图片然后调用基于RxSwift实现的网络请求。加上我们不想嵌套调用,就可以通过toBlocking同步调用。
RxTest
RxTest 是可以用来构建RxSwift自动化测试的包,需要单独需要进行pod引入框架。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java描述设计模式(10):组合模式
本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景 1、文件系统 下图是常见的计算机文件系统的一部分。 文件系统是一个树结构,树上长有节点。树的节点有两种: 树枝节点 即文件夹,有内部树结构,在图中涂有颜色; 树叶节点 另一种是文件,即树叶节点,没有内部树结构。 2、打印文件树结构 public class C01_InScene { public static void main(String[] args) { File file = new File("F:\\tree") ; fileTree(file, 0); } private static void fileTree(File file, int floor) { // 判断是否存在 if (file.exists()) { if (floor > 0) { // 循环打空格 for (int i = 0; i < floor; i++) { System.out.print(" "); } } if (file.isDirectory()) { System.out.println("+...
- 下一篇
Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情
0 相关源码 1 什么是Spring Boot 一个快速开发的脚手架 作用 快速创建独立的、生产级的基于Spring的应用程序 特性 无需部署WAR文件 提供starter简化配置 尽可能自动配置Spring以及第三方库 提供“生产就绪”功能,例如指标、健康检查、外部配置等 无代码生成&无XML 2 编写一个Spring Boot应用 2.1 需求 整合Spring MVC /test路径(端点) 2.2 使用Spring Initializr快速创建Spring Boot应用 编写测试代码 运行输出 也可以使用 mvn clean install确保打包成功 java -jar 运行程序 3 组成分析 pom.xml 配置文件 static目录存放静态文件 template目录存放模板文件,已过时 4 开发利器 添加依赖 pom.xml中的依赖实例 官方支持依赖列表 写注解 写配
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题