RxSwift、RxBlocking、RxTest初尝试-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

RxSwift、RxBlocking、RxTest初尝试

简介: 在Android开发上,RxJava已经是非常重要的组成之一。最近在用Swift开发iOS应用,考虑在架构设计上使用RxSwift。 添加依赖 # Podfile use_frameworks! target 'YOUR_TARGET_NAME' do pod 'RxSwift', '~...

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章