RXSwift初体验二

接着上篇RXSwift初体验继续深入了解RXSwift

  • 首先来一个空的序列 - 本来序列事件是Int类型的,这里调用emty函数 没有序列,只能complete
let emtyOb = Observable<Int>.empty()
        let _ = emtyOb.subscribe(onNext: { (number) in
            print("订阅:",number)
        }, onError: { (error) in
            print("error:",error)
        }, onCompleted: {
            print("完成回调")
        }) {
            print("释放回调")
        }
  • 单个信号序列创建
let array = ["LG_Cooci","LG_Kody"]
        Observable<[String]>.just(array)
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
        
        let _ = Observable<[String]>.just(array).subscribe(onNext: { (number) in
            print("订阅:",number)
        }, onError: { (error) in
            print("error:",error)
        }, onCompleted: {
            print("完成回调")
        }) {
            print("释放回调")
        }
  • 多个元素 - 针对序列处理
Observable<String>.of("LG_Cooci","LG_Kody")
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
        
        // 字典
        Observable<[String: Any]>.of(["name":"LG_Cooci","age":18])
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
        
        // 数组
        Observable<[String]>.of(["LG_Cooci","LG_Kody"])
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
  • 从集合中获取序列:数组,集合,set 获取序列 - 有可选项处理 - 更安全
Observable<[String]>.from(optional: ["LG_Cooci","LG_Kody"])
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
  • 使用deferred()方法延迟Observable序列的初始化,通过传入的block来实现Observable序列的初始化并且返回。
var isOdd = true
        let _ = Observable<Int>.deferred { () -> Observable<Int> in
            // 这里设计我们的序列
            isOdd = !isOdd
            if isOdd {
                return Observable.of(1,3,5,7,9)
            }
            return Observable.of(0,2,4,6,8)
            }
            .subscribe { (event) in
                print(event)
        }

通过以上的例子我们可以看出Observable的创建主要有下列几种方法

  • emty: 创建一个空的序列-但是只能订阅到complete
  • just: 构建一个只有一个元素的Observable队列 - 订阅完信息自动complete
  • of: 创建一个固定数量元素的Observable序列
  • from: 从一个序列(如Array/Dictionary/Set)中创建一个Observable序列。
  • deferred: 为每一个订阅者创建一个新的Observable序列
  • generate: 创建一个Observable序列,只要提供的条件值为true就可以生成值。
  • error: 创建一个不会发送任何条目并且立即终止错误的Observable序列
  • range: 创建一个Observable序列,它会发出一系列连续的整数,然后终止
  • timer: 获取计时器Observable序列
  • interval: 底层就是封装timer

Observable 的销毁

  • .disposed(by: disposeBag DisposeBag 来管理多个订阅行为的销毁

总结RXSwift流程详解

  1. 创建序列信息
  2. 订阅序列信息,创建observers保存所有我们的订阅者订阅者就是保存⼀一段代码块
  3. 发送响应,遍历我们的observers,让我们的所有的订阅者发送响应
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值