美文网首页
Observable介绍,创建可观察序列

Observable介绍,创建可观察序列

作者: 骑着雅迪小毛驴上班的老瞿 | 来源:发表于2018-06-08 16:59 被阅读0次

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)
    }
    


}

相关文章

网友评论

      本文标题:Observable介绍,创建可观察序列

      本文链接:https://www.haomeiwen.com/subject/mtbasftx.html