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
             */
    

      

  • 相关阅读:
    C++内存管理
    GitHub 简单用法
    Tembin
    git
    js 插件使用总结
    cas sso
    Redis实战
    全面分析 Spring 的编程式事务管理及声明式事务管理
    mybatis
    b2b
  • 原文地址:https://www.cnblogs.com/mapanguan/p/9283713.html
Copyright © 2011-2022 走看看