RxSwift中Observable的各种创建方法

广告:从前段时间开始接触RxSwift,跟着网上教程一点点的敲一些基础代码,慢慢地接触到越来越深的知识点,记录在此>>>

RxSwift中Observable的各种创建方法:

//just()

let observable1 = Observable.just(5)
复制代码

//of() //该方法接收可变的参数,但是参数的类型必须相同 //虽然没显示地说明类型,但是swift也会自动推断类型

let observable2 = Observable.of("A", "B", "C")
复制代码

//from() //改方法需要接收一个数组类型的参数 //效果和上面的of相同

let observable3 = Observable.from(["A", "B", "C"])
复制代码

//empty() //创建一个空的observable序列

let observable4 = Observable<Int>.empty()
复制代码

//never() //创建一个永远不会停止发出Event的observable序列

let observable5 = Observable<Int>.never()
复制代码

//error() //创建一个不会做任何操作,而是直接发送一个错误的observable序列

enum MyError: Error {
 case A
 case B
}
let observable6 = Observable<Int>.error(MyError.A)
复制代码

//range() //下面两个样例的结果相同

let observable7 = Observable.range(start: 1, count: 5)
let observable8 = Observable.of(1,2,3,4,5)
复制代码

//repeatElement() //创建一个可以无限发出给定元素的observable序列

let observable9 = Observable.repeatElement(1)
复制代码

//generate() //创建一个只有当所有条件都为true的时候才会给出动作的observable序列 //下面两个样例的结果相同

let observable10 = Observable.generate(initialState: 0, condition: {$0<=10}, iterate: {$0+2})
let observable11 = Observable.of(0,2,4,6,8,10)
复制代码

//create() //该方法接收一个block形式的参数,对每一个过来的订阅者进行处理

let observable12 = Observable<String>.create {observer in
//对订阅者发出next事件,且携带一个数据hello world
   observer.onNext("hello world")
    //对订阅者发出.complated事件
   observer.onCompleted()
    //一个订阅者会有一个Disposable类型的返回值,所以结尾要return一个Disposable
   return Disposables.create()
   }
//测试订阅
observable12.subscribe {
    print($0)
}
复制代码

//deferred() //创建一个observable工厂,通过传入一个block来执行延迟observable序列的创建行为,而这个block里就是真正的实例化序列的对象的地方。

var isOdd = true
  
let factory = Observable<Int>.deferred {
    isOdd = !isOdd
   
   if isOdd {
        return Observable.of(1,3,5,7)
    }else {
       return Observable.of(2,4,6,8)
    }
}
//第一次订阅测试
factory.subscribe { (event) in
    print("\(isOdd)", event)
}
//第二次订阅测试
factory.subscribe { (event) in
   print("\(isOdd)", event)
}
复制代码

//interval() //创建的observable序列每隔一段时间会发出一个索引数的元素,而且会一直发送下去 //下面方法每隔1秒发送一次,并且在主线程

let observable13 = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
observable13.subscribe { (event) in
   print(event)
}
复制代码

//timer() //5秒后发出唯一一个元素0

let observable14 = Observable<Int>.timer(5, scheduler: MainScheduler.instance)
observable14.subscribe { (event) in
    print(event)
}
复制代码

//5秒后创建一个序列,每隔1秒产生一个元素

let observable15 = Observable<Int>.timer(5, period: 1, scheduler: MainScheduler.instance)
observable15.subscribe { (event) in
   print(event)
}
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值