import UIKit
import RxSwift
import RxCocoa
class ObservableViewController: UIViewController {
enum MyError:Error {
case A
case B
}
override func viewDidLoad() {
super.viewDidLoad()
}
func demo13(){
// 这个方法有两种用法,一种是创建的Observable序列在经过设定的一段时间后,产生唯一的一个元素(也就是只发送一次)
let observable = Observable<Int>.timer(2, scheduler: MainScheduler.instance)
observable.subscribe{ event in
print(event)
}
// // 创建一个:经过设定的一段时间,每隔一段时间产生一个元素
// let observable = Observable<Int>.timer(2, period: 1, scheduler: MainScheduler.instance)
// observable.subscribe{ event in
// print(event)
// }
}
func demo12(){
// 创建interval(定时器)每隔一段设定时间,会发出一个索引的元素.而且他会一直发送下去
let observable = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
observable.subscribe{ event in
print(event)
}
}
func demo11(){
// 相当于是创建一个Observable工厂,通过传入一个block来执行延迟observable序列创建的行为,而这个block里就是真正的实例化序列对象的地方
// 用于标记是基数,还是偶数
var isOdd = true
// 使用deferred()方法延迟Observable序列的初始化,传入的block来实现Observable序列的初始化并且返回
let factory:Observable<Int> = Observable.deferred {
// 让每次执行这个block时候都会让奇偶进行交替
isOdd = !isOdd
if isOdd{
return Observable.of(1,2)
}else{
return Observable.of(3,4)
}
}
// 订阅测试
factory.subscribe{ event in
print(event)
}
factory.subscribe{event in
print(event)
}
}
func demo10(){
// 创建observable
let observable = Observable<String>.create { (observable) -> Disposable in
// 对订阅者发出了.next事件,且携带一个数据"123"
observable.onNext("123")
// 对订阅者发出了.completed
observable.onCompleted()
// 因为一个订阅行为会有一个Disposeable类型的返回值,所以在结尾一定要return
return Disposables.create()
}
// 订阅observable
observable.subscribe(onNext: { (event) in
print(event)
})
observable.subscribe{
print($0)
}
observable.subscribe{
print($0)
}
}
func demo9(){
// 创建一个只有当所有的判断条件为True的时候,才会给出动作的Observable
let observable = Observable.generate(initialState: 0, condition: {
$0 <= 10
}) {
$0 + 2
}
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
func demo8(){
// 创建一个可以无限发出给定元素的Event的Observable序列
let observable = Observable.repeatElement(1)
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
func demo7(){
// 创建一个一这个范围内所有制作为初始值的Observable序列
let observable = Observable.range(start: 1, count: 4)
}
func demo6(){
// 直接发送一个错误的Observable序列
let observable = Observable<Int>.error(MyError.A)
}
func demo5(){
// 创建一个永远不会发出event的序列
let observable = Observable<Int>.never()
}
func demo4(){
// 创建一个空内容的Observable序列
let observable = Observable<Int>.empty()
}
func demo3(){
//1 该方法需要一个数组参数
let observable = Observable.from(["A","B","C","D"])
}
func demo2(){
//1 该方法可以接受可变数量的参数(必须要是同类型)
//2 我们没有显示地声明Observable 的泛型,swift也会自动推到
let observable = Observable.of("A","B")
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
func demo1(){
//1 该方法通过传入一个默认值来初始化
//2 observable的类型为Observable<Int> 指定Observable携带的数据类型必须是Int类型的
let observable = Observable<Int>.just(5)
print(observable)
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
}
网友评论