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的更多相关文章
随机推荐
- php 获取当前页面url路径
#测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST'].""; # ...
- BUAAOO P13-P14 UML Interaction
- C# 调用类库里的事件
首先在类库中定义事件: //定义委托 public delegate void DelWeiTuo(string name); //定义事件 public event DelWeiTuo EventW ...
- Android 一键清理动画
版本号:1.0 日期:2014.7.29 2014.7.30 版权:© 2014 kince 转载注明出处 一键清理是非常多Launcher都会带有的功能,其效果也比較美观.实现方式或许有非常多 ...
- [深入浅出Cocoa]iOS程序性能优化
本文转载至 http://blog.csdn.net/kesalin/article/details/8762032 [深入浅出Cocoa]iOS程序性能优化 罗朝辉 (http://blog.csd ...
- Hibernate ManyToOne Mappings 多对一关联映射
Hibernate ManyToOne Mappings 多对一关联映射 Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml)2.创建持久化类 ...
- 前后端通吃的单元测试---mocha
git clone https://github.com/shenggen1987/mocha-demo.git npm install front 前台测试代码 backend 后台测试代码 先安装 ...
- 7-12 畅通工程之最低成本建设问题(30 point(s)) 【PRIME】
7-12 畅通工程之最低成本建设问题(30 point(s)) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间 ...
- Android Weekly Notes Issue #246
Android Weekly Issue #246 February 26th, 2017 Android Weekly Issue #246 本期内容包括: RecyclerView上的Shared ...
- linux 查看某进程 并杀死进程 ps grep kill
Linux 中使用top 或 ps 查看进程使用kill杀死进程 1.使用top查看进程: $top 进行执行如上命令即可查看top!但是难点在如何以进程的cpu占用量进行排序呢? cpu占用量排序执 ...