注册
iOS

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
🐶
🐱
🐭
🐹

0 个评论

要回复文章请先登录注册