zoukankan      html  css  js  c++  java
  • [RxSwift教程]10、条件和布尔操作符:amb、takeWhile、skipWhile等

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(let_us_code)
    ➤博主域名:https://www.zengqiang.org
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    强烈推荐!!!试用博主个人App作品!提需求!提建议!
    App Store搜索:【Mind Draft
    中国区可直接点击跳转:【Mind Draft

    十、条件和布尔操作符(Conditional and Boolean Operators)

    条件和布尔操作会根据条件发射或变换 Observables,或者对他们做布尔运算。
     

    1,amb

    (1)基本介绍
    • 当传入多个 Observables 到 amb 操作符时,它将取第一个发出元素或产生事件的 Observable,然后只发出它的元素。并忽略掉其他的 Observables。
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)
    (2)使用样例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    let disposeBag = DisposeBag()
     
    let subject1 = PublishSubject<Int>()
    let subject2 = PublishSubject<Int>()
    let subject3 = PublishSubject<Int>()
     
    subject1
        .amb(subject2)
        .amb(subject3)
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
     
    subject2.onNext(1)
    subject1.onNext(20)
    subject2.onNext(2)
    subject1.onNext(40)
    subject3.onNext(0)
    subject2.onNext(3)
    subject1.onNext(60)
    subject3.onNext(0)
    subject3.onNext(0)

    运行结果如下:

    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)

    2,takeWhile

    (1)基本介绍
    • 该方法依次判断 Observable 序列的每一个值是否满足给定的条件。 当第一个不满足条件的值出现时,它便自动完成。
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)
    (2)使用样例
    1
    2
    3
    4
    5
    6
    let disposeBag = DisposeBag()
     
    Observable.of(2, 3, 4, 5, 6)
        .takeWhile { $0 < 4 }
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
    运行结果如下:
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)

    3,takeUntil

    (1)基本介绍
    • 除了订阅源 Observable 外,通过 takeUntil 方法我们还可以监视另外一个 Observable, 即 notifier。
    • 如果 notifier 发出值或 complete 通知,那么源 Observable 便自动完成,停止发送事件。
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)
    (2)使用样例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    let disposeBag = DisposeBag()
     
    let source = PublishSubject<String>()
    let notifier = PublishSubject<String>()
     
    source
        .takeUntil(notifier)
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
     
    source.onNext("a")
    source.onNext("b")
    source.onNext("c")
    source.onNext("d")
     
    //停止接收消息
    notifier.onNext("z")
     
    source.onNext("e")
    source.onNext("f")
    source.onNext("g")
    运行结果如下:
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)

    4,skipWhile

    (1)基本介绍
    • 该方法用于跳过前面所有满足条件的事件。
    • 一旦遇到不满足条件的事件,之后就不会再跳过了。
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)
    (2)使用样例
    1
    2
    3
    4
    5
    6
    7
    8
    let disposeBag = DisposeBag()
     
    Observable.of(2, 3, 4, 5, 6)
        .skipWhile { $0 < 4 }
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
        }
    }
    运行结果如下:
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)

    5,skipUntil

    (1)基本介绍
    • 同上面的 takeUntil 一样,skipUntil 除了订阅源 Observable 外,通过 skipUntil 方法我们还可以监视另外一个 Observable, 即 notifier 。
    • 与 takeUntil 相反的是。源 Observable 序列事件默认会一直跳过,直到 notifier 发出值或 complete 通知。
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)
    (2)使用样例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    let disposeBag = DisposeBag()
     
    let source = PublishSubject<Int>()
    let notifier = PublishSubject<Int>()
     
    source
        .skipUntil(notifier)
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
     
    source.onNext(1)
    source.onNext(2)
    source.onNext(3)
    source.onNext(4)
    source.onNext(5)
     
    //开始接收消息
    notifier.onNext(0)
     
    source.onNext(6)
    source.onNext(7)
    source.onNext(8)
     
    //仍然接收消息
    notifier.onNext(0)
     
    source.onNext(9)
    运行结果如下:
    原文:Swift - RxSwift的使用详解10(条件和布尔操作符:amb、takeWhile、skipWhile等)
  • 相关阅读:
    html5 历史管理
    html5小知识点
    html5的Form新特性
    html5语义化标签
    Comet反向ajax技术实现客服聊天系统
    Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法
    浏览器中关于事件的那点事儿
    iOS 强制横竖屏方法 -
    编辑readme 文件 -
    iOS- FFmpeg库的编译
  • 原文地址:https://www.cnblogs.com/strengthen/p/13673617.html
Copyright © 2011-2022 走看看