RXSwift01
//创建 Observable 序列
func createObservable(){
/*
let observable = Observable<Int>.just(5)
let observableStr = Observable.of("A","B","C")
let observableArr = Observable.from(["A","B","C"])
let observableEmpty = Observable<Int>.empty()
let observareNaver = Observable<Int>.never()
let observareError = Observable<Int>.error(NSError.init())
let observareRange = Observable.range(start: 1, count: 5)
let observareRange1 = Observable.of(1,2,3,4,5)
let observareGen = Observable.generate(initialState: 0, condition: {$0 <= 10}, iterate: {$0 + 2}) print(observable,observableStr,observableArr,observableEmpty,
observareError,observareNaver,observareRange,observareRange1,observareGen)
*/
let observareCreate = Observable<String>.create { (observer) -> Disposable in
//观察者发出事件
observer.onNext("rxswift.com")
//发出完成事件
observer.onCompleted()
//因为一个订阅行为会有一个Disposable类型的返回值,所以在结尾一定要returen一个Disposable
return Disposables.create()
}
observareCreate.subscribe { (str) in
print(str)
}.dispose()
//工厂模式
var isOdd = true
let factory:Observable<Int> = Observable.deferred { () -> Observable<Int> in
isOdd = !isOdd
if isOdd {
return Observable.of(,,,)
}else{
return Observable.of(,,,)
}
}
factory.subscribe { (result) in
print(result)
}.dispose()
factory.subscribe { (event) in
print(event)
}.dispose()
//定时器唯一性
let obervableTime = Observable<Int>.timer(, scheduler: MainScheduler.instance)
print(obervableTime.subscribe { (event) in
print(event)
}) let observableStr = Observable.of("A","B","C")
//使用subscription常量存储这个订阅方法
let subscription = observableStr.subscribe { (element) in
print(element)
}
//销毁订阅
subscription.dispose() let disposeBag = DisposeBag.init()
let obserable = Observable.of("A","B","C")
obserable.subscribe { (event) in
print(event)
}.disposed(by: disposeBag) //每个一秒发出一个索引 map ---bind 进行绑定
let obserable1 = Observable<Int>.interval(, scheduler: MainScheduler.instance)
obserable1.map{"当前索引:\($0)"}.bind { [weak self](text) in
self?.label.text = text
}.disposed(by: disposeBag) let obserable2:AnyObserver<String> = AnyObserver.init { (event) in
switch event{
case .next(let data):
print(data)
case .error(let error):
print(error)
case .completed:
print("Completable")
} }
obserable.subscribe(obserable2).dispose() let obserable3:AnyObserver<String> = AnyObserver.init { (event) in
switch event {
case .next(let text):
self.label.text = text
default:
break
}
}
let obserable4 = Observable<Int>.interval(, scheduler: MainScheduler.instance)
obserable4.map{"当前索引:\($0)"}.bind(to: obserable3).disposed(by: disposeBag) //观察者模式
let observer3:Binder<String> = Binder.init(label) { (view, text) in
//刷新UI
view.text = text
}
let observable = Observable<Int>.interval(, scheduler: MainScheduler.instance)
observable.map{
"当前索引:\($0)"
}.bind(to: observer3)
.disposed(by: disposeBag) let observableLbl = Observable<Int>.interval(, scheduler: MainScheduler.instance)
//RXSwift绑定属性
observableLbl.map {"当前索引:\($0)"}
.bind(to: label.rx.text)
.disposed(by: disposeBag)
}
RXSwift01的更多相关文章
随机推荐
- poi 处理excel 小数问题 整数不保留小数位 整数多.0
读取的单元格为 hssfCell ,传入下面我提供的方法处理默认poi返回的为DOUBLE,所有先转为Long判断下,再进行返回: private String getValue(Cell hssfC ...
- Nginx配置故障转移
当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用. 如果上游服务器的某一台宕机了,直接轮训到下一个~ 8080 8081 8082 关 ...
- codeforces 664A A. Complicated GCD(水题)
题目链接: A. Complicated GCD time limit per test 1 second memory limit per test 256 megabytes input stan ...
- linguistic相关
Knowing a word means knowing both its sound and its meaning, while being able to use a word requires ...
- POJ1236 Network of Schools (强连通分量,注意边界)
A number of schools are connected to a computer network. Agreements have been developed among those ...
- P2647 最大收益
题目描述 现在你面前有n个物品,编号分别为1,2,3,……,n.你可以在这当中任意选择任意多个物品.其中第i个物品有两个属性Wi和Ri,当你选择了第i个物品后,你就可以获得Wi的收益:但是,你选择该物 ...
- maven的常用构建命令
mvn clean:删除项目根目录中的target目录
- DTP模型之二:(XA协议之二)JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)
jotm只能用的xapool数据源,而且很少更新. 一.以下介绍Spring中直接集成JOTM提供JTA事务管理.将JOTM集成到Tomcat中. (经过测试JOTM在批量持久化时有BUG需要修改源码 ...
- mysql分区表之四:分区表性能
一, 分区概念 分区允许根据指定的规则,跨文件系统分配单个表的多个部分.表的不同部分在不同的位置被存储为单独的表.MySQL从5.1.3开始支持Partition. 分区和手动分表对比 手 ...
- web应用目录结构
news web(应用的名字)||--静态资源和JSP文件都可以直接放在web应用的目录下,浏览器可以直接访问(html/jsp/css)|--WEB-INF 可以没有,但是最好有,一旦有,则结构需要 ...