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的更多相关文章
随机推荐
- Webkit JNI
WebCoreFrameBridge.cpp BrowserFrame通过jni传下来的调用都会调用到WebCoreFrameBridge.cpp中的对应函数中,其他webkit的模块想回调信息给Br ...
- libcurl理解和使用
1 libcurl是一个很好的客户端库 2 CURLOPT_URL 就是普通的url. 3 CURLOPT_HTTPHEADER 3.1 http get 4 CURLOPT_WRITEFUNCTIO ...
- 无感知的用同步的代码编写方式达到异步IO的效果和性能,避免了传统异步回调所带来的离散的代码逻辑和陷入多层回调中导致代码无法维护
golang/goroutine 和 swoole/coroutine 协程性能测试对比 - Go语言中文网 - Golang中文社区 https://studygolang.com/articles ...
- Jsp中操作页面显示
通常我们想改变网页中的显示可以用下面的方式. <script type="text/javascript">function show(){ document. ...
- UVA 10529 - Dumb Bones(概率+区间dp)
UVA 10529 - Dumb Bones option=com_onlinejudge&Itemid=8&category=518&page=show_problem&am ...
- shapes
接口 shape package shape; public abstract interface shape { public abstract void Draw(); public abstra ...
- Masonry库的使用
Github 简要 自动布局最重要的是约束:UI元素间关系的数学表达式.约束包括尺寸.由优先级和阈值管理的相对位置.它们是添加剂,可能导致约束冲突 .约束不足造成布局无法确定 .这两种情况都会产生异常 ...
- SpringSecurity加密Salt
Spring Security 加密,默认加salt的输出为:password{salt};然后再对这个加salt后的密码加密存储. 源码如下: protected String mergePassw ...
- python 基础之第十二天(re正则,socket模块)
In [14]: 'hello-wold.tar.gz'.split('.') Out[14]: ['hello-wold', 'tar', 'gz'] In [15]: import re In [ ...
- [国家集训队]Crash的数字表格 / JZPTAB
传送门 题目要求,求: \[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 先转化为gcd的形式,然后枚举gcd. \[\sum_{i=1}^n\sum_{j=1}^m\sum_ ...