iOS RXSwift 5.14
takeLast
仅仅从 Observable
中发出尾部 n 个元素
通过 takeLast 操作符你可以只发出尾部 n 个元素。并且忽略掉前面的元素。
演示
let disposeBag = DisposeBag()
Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵")
.takeLast(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
🐸
🐷
🐵
take
仅仅从 Observable
中发出头 n 个元素
通过 take 操作符你可以只发出头 n 个元素。并且忽略掉后面的元素,直接结束序列。
演示
let disposeBag = DisposeBag()
Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵")
.take(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
🐱
🐰
🐶
subscribeOn
指定 Observable
在那个 Scheduler
执行
ReactiveX 使用 Scheduler 来让 Observable
支持多线程。你可以使用 subscribeOn 操作符,来指示 Observable
在哪个 Scheduler 执行。
observeOn 操作符非常相似。它指示 Observable
在哪个 Scheduler 发出通知。
默认情况下,Observable
创建,应用操作符以及发出通知都会在 Subscribe
方法调用的 Scheduler 执行。subscribeOn 操作符将改变这种行为,它会指定一个不同的 Scheduler 来让 Observable
执行,observeOn 操作符将指定一个不同的 Scheduler 来让 Observable
通知观察者。
如上图所示,subscribeOn 操作符指定 Observable
在那个 Scheduler 开始执行,无论它处于链的那个位置。 另一方面 observeOn 将决定后面的方法在哪个 Scheduler 运行。因此,你可能会多次调用 observeOn 来决定某些操作符在哪个线程运行。
startWith
将一些元素插入到序列的头部
startWith 操作符会在 Observable
头部插入一些元素。
(如果你想在尾部加入一些元素可以用concat)
演示
let disposeBag = DisposeBag()
Observable.of("🐶", "🐱", "🐭", "🐹")
.startWith("1")
.startWith("2")
.startWith("3", "🅰️", "🅱️")
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
3
🅰️
🅱️
2
1
🐶
🐱
🐭
🐹