RxSwift 图解-[RxSwfit联合操作]

联合操作.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入坑解读-你所需要知道的各种概念

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 RxSwift入坑解读-你所需要知道的各种概念 沸沸腾关注 2016.11.27 19:11*字...
    枫叶1234阅读 7,809评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,049评论 25 709
  • 每天我们工作都安排的满满的,一天下来却发现我们自己依然收获甚微,这是为何?因为我们只是把时间安排满了,注意力却是闲...
    发牢骚的小皮匠阅读 1,436评论 0 0
  • 作者 / 我走路带风 现如今单身狗鄙视热恋情侣,热恋情侣嘲讽单身狗的风气越来越严重了。 我仔细研究了一下,发现其实...
    我走路带风carina阅读 7,093评论 1 2
  • iterm2 + powerline https://www.cnblogs.com/xishuai/p/mac-...
    VeyronC阅读 4,572评论 0 0