zoukankan      html  css  js  c++  java
  • RxSwift学习笔记9:amb/tabkeWhile/tabkeUntil/skipWhile/skipUntil

         //amb基本介绍
            //当传入多个 Observables 到 amb 操作符时,它将取第一个发出元素或产生事件的 Observable,然后只发出它的元素。
            //并忽略掉其他的 Observables。
            
            let psubject0 = PublishSubject<Int>()
            let psubject1 = PublishSubject<Int>()
            let psubject2 = PublishSubject<Int>()
            
            psubject0.amb(psubject1).amb(psubject2).subscribe(onNext: {print($0)}).disposed(by: disposeBag)
            
            psubject0.onNext(1)
            psubject1.onNext(10)
            psubject2.onNext(100)
            
            psubject0.onNext(2)
            psubject1.onNext(20)
            psubject2.onNext(200)
            /*
             1
             2
             */
            
            print("
    ")
            //tabkeWhile:该方法依次判断 Observable 序列的每一个值是否满足给定的条件。 当第一个不满足条件的值出现时,它便自动完成。
            Observable.of(1,2,3,4,5).takeWhile({$0<4}).subscribe(onNext: {print($0)}).disposed(by: disposeBag)
            
            print("
    ")
            //除了订阅源 Observable 外,通过 takeUntil 方法我们还可以监视另外一个 Observable, 即 notifier。
            //如果 notifier 发出值或 complete 通知,那么源 Observable 便自动完成,停止发送事件。
            psubject1.takeUntil(psubject2).subscribe ( onNext:{print($0)}).disposed(by: disposeBag)
            psubject1.onNext(1)
            psubject1.onNext(2)
            psubject1.onNext(3)
            //停止接收消息
            psubject2.onNext(999)
            psubject1.onNext(4)
            psubject1.onNext(5)
            psubject1.onNext(6)
            /*
             1
             2
             3
             */
            
            print("
    ")
            //skipWhile:
            //该方法用于跳过前面所有满足条件的事件。
            //一旦遇到不满足条件的事件,之后就不会再跳过了。
            Observable.of(1,2,3,4,5).skipWhile({$0<4}).subscribe(onNext:{print($0)}).disposed(by: disposeBag)
            /*
             4
             5
             */
            
            print("
    ")
            //skipUntil:
            //同上面的 takeUntil 一样,skipUntil 除了订阅源 Observable 外,通过 skipUntil 方法我们还可以监视另外一个 Observable, 即 notifier 。
            //与 takeUntil 相反的是。源 Observable 序列事件默认会一直跳过,直到 notifier 发出值或 complete 通知。
            psubject1.skipUntil(psubject2).subscribe(onNext:{print($0)}).disposed(by: disposeBag)
            psubject1.onNext(1)
            psubject1.onNext(2)
            psubject1.onNext(3)
            //停止接收消息
            psubject2.onNext(999)
            psubject1.onNext(4)
            psubject1.onNext(5)
            psubject1.onNext(6)
            /*
             4
             5
             6
             */
    

      

  • 相关阅读:
    每日日报2021 5/25
    每日日报2021 5/24
    Rust-Cargo是什么
    Rust学习-Intellij开发环境配置
    设计模式-命令模式
    918. Maximum Sum Circular Subarray
    不错的画类图工具-PlantUML
    Daily Coding Problem: Problem #793
    读懂UML类图
    1753. Maximum Score From Removing Stones
  • 原文地址:https://www.cnblogs.com/mapanguan/p/9283713.html
Copyright © 2011-2022 走看看