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.deferred
- 这里有一个需求:动态序列 - 根据外界的标识 - 动态输出
- 使用
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
- 该方法建立一个能够无限发出给定元素的
Event
的 Observable
序列(永不终止)
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)
复制代码
总结: