RxSwift学习SwiftRxSwift

RxSwift 图解-[RxSwfit联合操作]

2017-08-18  本文已影响207人  船长_
联合操作.png combinlatest.png

combinLatest

let disposeBag = DisposeBag()
    
let stringSubject = PublishSubject<String>()
let intSubject = PublishSubject<Int>()
    
Observable.combineLatest(stringSubject, intSubject) { stringElement, intElement in
        "\(stringElement) \(intElement)"
    }
    .subscribe(onNext: { print($0) })
    .addDisposableTo(disposeBag)
    
stringSubject.onNext("🅰️")
    
stringSubject.onNext("🅱️")
intSubject.onNext(1)
    
intSubject.onNext(2)
    
stringSubject.onNext("🆎")

打印结果
🅱️ 1
🅱️ 2
🆎 2

switchLatest.png

switchLatest

let disposeBag = DisposeBag()
    
let subject1 = BehaviorSubject(value: "⚽️")
let subject2 = BehaviorSubject(value: "🍎")
    
let variable = Variable(subject1)
    
variable.asObservable()
    .switchLatest()
    .subscribe(onNext: { print($0) })
    .addDisposableTo(disposeBag)
    
subject1.onNext("🏈")
subject1.onNext("🏀")
    
variable.value = subject2
    
subject1.onNext("⚾️")
    
subject2.onNext("🍐")
variable.value = subject1
subject2.onNext("123456")
subject1.onNext("654321")

打印结果
⚽️
🏈
🏀
🍎
🍐
⚾️
654321

merge.png

merge

let disposeBag = DisposeBag()
    
let subject1 = PublishSubject<String>()
let subject2 = PublishSubject<String>()
    
Observable.of(subject1, subject2)
    .merge()
    .subscribe(onNext: { print($0) })
    .addDisposableTo(disposeBag)
    
subject1.onNext("🅰️")
    
subject1.onNext("🅱️")
    
subject2.onNext("①")
    
subject2.onNext("②")
    
subject1.onNext("🆎")
    
subject2.onNext("③")

打印结果
🅰️
🅱️
①
②
🆎
③

startWith.png

startWith

let disposeBag = DisposeBag()
    
Observable.of("2", "3")
    .startWith("1")
    .subscribe(onNext: { print($0) })
    .addDisposableTo(disposeBag)

打印结果
1
2
3
zip.png

zip

let disposeBag = DisposeBag()
    
let stringSubject = PublishSubject<String>()
let intSubject = PublishSubject<Int>()
    
Observable.zip(stringSubject, intSubject) { stringElement, intElement in
    "\(stringElement) \(intElement)"
    }
    .subscribe(onNext: { print($0) })
    .addDisposableTo(disposeBag)
    
stringSubject.onNext("🅰️")
stringSubject.onNext("🅱️")
    
intSubject.onNext(1)
    
intSubject.onNext(2)
    
stringSubject.onNext("🆎")
intSubject.onNext(3)

🅰️ 1   将stringSubject和intSubject压缩到一起共同处理
🅱️ 2
🆎 3

参考【iOS开发】RxSwift入坑解读-你所需要知道的各种概念

上一篇 下一篇

猜你喜欢

热点阅读