您现在的位置是:首页 > 文章详情

RxSwift、RxBlocking、RxTest初尝试

日期:2019-09-17点击:484

在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引入框架。

原文链接:https://yq.aliyun.com/articles/718637
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章