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("\n") //tabkeWhile:该方法依次判断 Observable 序列的每一个值是否满足给定的条件。 当第一个不满足条件的值出现时,它便自动完成。 Observable.of(1,2,3,4,5).takeWhile({$0<4}).subscribe(onNext: {print($0)}).disposed(by: disposeBag) print("\n") //除了订阅源 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("\n") //skipWhile: //该方法用于跳过前面所有满足条件的事件。 //一旦遇到不满足条件的事件,之后就不会再跳过了。 Observable.of(1,2,3,4,5).skipWhile({$0<4}).subscribe(onNext:{print($0)}).disposed(by: disposeBag) /* 4 5 */ print("\n") //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 */