05.RxSwift Observable创建

Observable创建的方法
1.empty()
  • 首先来一个空的序列-本来序列事件是Int类型的,这里调用emty函数 没有序列,只能complete
  // 首先来一个空的序列 - 本来序列事件是Int类型的,这里调用emty函数 没有序列,只能complete
        print("********emty********")
        let emtyOb = Observable<Int>.empty()
        _ = emtyOb.subscribe(onNext: { (number) in
            print("订阅:",number)
        }, onError: { (error) in
            print("error:",error)
        }, onCompleted: {
            print("完成回调")
        }) {
            print("释放回调")
        }
2.just
  • 单个信号序列创建
// 单个信号序列创建
       let array = ["LiHua","LiMing"]
       Observable<[String]>.just(array)
           .subscribe { (event) in
               print(event)
           }.disposed(by: disposeBag)
       
       _ = Observable<[String]>.just(array).subscribe(onNext: { (number) in
           print("订阅:",number)
       }, onError: { (error) in
           print("error:",error)
       }, onCompleted: {
           print("完成回调")
       }) {
           print("释放回调")
       }
3.of
  • 多个元素 - 针对序列处理
// 多个元素 - 针对序列处理
        Observable<String>.of("LiHua","LiMiing")
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
        
        // 字典
        Observable<[String: Any]>.of(["name":"LiHua","age":18])
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
        
        // 数组
        Observable<[String]>.of(["LiHua","LiMiing"])
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
4.from
  • 从集合中获取序列:数组,集合,set 获取序列 - 有可选项处理 - 更安全
Observable<[String]>.from(optional: ["LiHua","LiMing"])
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
5.defer
  • 这里有一个需求:动态序列 - 根据外界的标识 - 动态输出
  • 使用deferred()方法延迟Observable序列的初始化,通过传入的block来实现Observable序列的初始化并且返回
var isOdd = true
        _ = 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)
            }
6.rang
  • 生成指定范围内的可观察整数序列
	/ /生成指定范围内的可观察整数序列。
        Observable.range(start: 2, count: 5)
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
7.generate
  • 该方法创建一个只有当提供的所有的判断条件都为 true 的时候,才会给出动作的 Observable 序列。
  • 初始值给定 然后判断条件1 再判断条件2 会一直递归下去,直到条件1或者条件2不满足
  • 类似 数组遍历循环
Observable.generate(initialState: 0,// 初始值
                            condition: { $0 < 10}, // 条件1
                            iterate: { $0 + 2 })  // 条件2 +2
            .subscribe { (event) in
                print(event)
            }.disposed(by: disposeBag)
        
        // 数组遍历
        let arr = ["LiHua_1","LiHua_2","LiHua_3","LiHua_4","LiHua_5","LiHua_6","LiHua_7","LiHua_8","LiHua_9","LG_LiHua_10"]
        Observable.generate(initialState: 0,// 初始值
            condition: { $0 < arr.count}, // 条件1
            iterate: { $0 + 1 })  // 条件2 +2
            .subscribe(onNext: {
                print("遍历arr:",arr[$0])
            })
            .disposed(by: disposeBag)
8.timer
  • 第一次参数:第一次响应距离现在的时间
  • 第二个参数:时间间隔
  • 第三个参数:线程
Observable<Int>.timer(5, period: 2, scheduler: MainScheduler.instance)
            .subscribe { (event) in
                print(event)
            }
        .disposed(by: disposeBag)

        // 因为没有指定期限period,故认定为一次性
        Observable<Int>.timer(1, scheduler: MainScheduler.instance)
            .subscribe { (event) in
                print("111111111 \(event)")
            }
            //.disposed(by: disposeBag)
        
9.interval
  • 定时器
	Observable<Int>.interval(1, scheduler: MainScheduler.instance)
            .subscribe { (event) in
                print(event)
            }
            //.disposed(by: disposeBag)
        
10.repeatElement
  • 该方法创建一个可以无限发出给定元素的 EventObservable 序列(永不终止)
 Observable<Int>.repeatElement(5)
            .subscribe { (event) in
                // print("订阅:",event)
            }
            .disposed(by: disposeBag)
11.error
  • 对消费者发出一个错误信号
Observable<String>.error(NSError.init(domain: "lgerror", code: 10086, userInfo: ["reason":"unknow"]))
            .subscribe { (event) in
                print("订阅:",event)
            }
            .disposed(by: disposeBag)
12.never
  • 该方法创建一个永远不会发出 Event(也不会终止)的 Observable 序列
  • 这种类型的响应源 在测试或者在组合操作符中禁用确切的源非常有用
Observable<String>.never()
            .subscribe { (event) in
                print("走了",event)
            }
            .disposed(by: disposeBag)
总结:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值