这一篇的内容较为简单,但是为了内容的完整性,还是发出来了。
有想法的可以自行翻阅《RxSwift中文文档》
filter
发出 Observable 中通过判定的元素
let disposeBag = DisposeBag()
Observable.of(2, 30, 22, 5, 60, 1)
.filter { $0 > 10 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
打印结果:
33
22
60
take
从 Observable 中发出头 n 个元素
let disposeBag = DisposeBag()
Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵")
.take(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
打印结果:
🐱
🐰
🐶
takeLast
从 Observable 中发出尾部 n 个元素
let disposeBag = DisposeBag()
Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵")
.takeLast(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
打印结果:
🐸
🐷
🐵
elementAt
只发出 Observable 中的第 n 个元素
let disposeBag = DisposeBag()
Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵")
.elementAt(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
打印结果:
🐸
skip
跳过 Observable 中头 n 个元素
let disposeBag = DisposeBag()
Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵")
.skip(2)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
🐶
🐸
🐷
🐵
skipWhile
跳过 Observable 中头几个元素,直到元素的判定为否
skipWhile 操作符可以让你忽略源 Observable 中头几个元素,直到元素的判定为否后,它才镜像源 Observable。
let disposeBag = DisposeBag()
Observable.of(1, 2, 3, 4, 3, 2, 1)
.skipWhile { $0 < 4 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
4
3
2
1
skipUntil
跳过 Observable 中头几个元素,直到另一个 Observable 发出一个元素
skipUntil 操作符可以让你忽略源 Observable 中头几个元素,直到另一个 Observable 发出一个元素后,它才镜像源 Observable。
let disposeBag = DisposeBag()
let A = PublishSubject<String>()
let B = PublishSubject<String>()
A.skipUntil(B)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
A.onNext("A - 1")
A.onNext("A - 2")
A.onNext("A - 3")
B.onNext("B - 1")
A.onNext("A - 4")
A.onNext("A - 5")
A.onNext("A - 6")
输出结果:
A - 4
A - 5
A - 6
takeWhile
只取头几个满足判定的元素
let disposeBag = DisposeBag()
Observable.of(1, 2, 3, 4, 3, 2, 1)
.takeWhile { $0 < 4 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
1
2
3
takeUntil
与skipUntil 相反,只发送另外一个Observable发出第一个元素前发出的元素
let disposeBag = DisposeBag()
let A = PublishSubject<String>()
let B = PublishSubject<String>()
A.takeUntil(B)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
A.onNext("A - 1")
A.onNext("A - 2")
A.onNext("A - 3")
B.onNext("B - 1")
A.onNext("A - 4")
A.onNext("A - 5")
A.onNext("A - 6")
输出结果:
A - 1
A - 2
A - 3
distinctUntilChanged
阻止 Observable 发出相同的元素
distinctUntilChanged 操作符将阻止 Observable 发出相同的元素。如果后一个元素和前一个元素是相同的,那么这个元素将不会被发出来。如果后一个元素和前一个元素不相同,那么这个元素才会被发出来。
let disposeBag = DisposeBag()
Observable.of("🐱", "🐷", "🐱", "🐱", "🐱", "🐵", "🐱")
.distinctUntilChanged()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
```
输出结果:
🐱
🐷
🐱
🐵
🐱