iOS RXSwift 5.9
materialize
将序列产生的事件,转换成元素
通常,一个有限的 Observable
将产生零个或者多个 onNext
事件,然后产生一个 onCompleted
或者 onError
事件。
materialize 操作符将 Observable
产生的这些事件全部转换成元素,然后发送出来。
merge
将多个 Observables
合并成一个
通过使用 merge 操作符你可以将多个 Observables
合并成一个,当某一个 Observable
发出一个元素时,他就将这个元素发出。
如果,某一个 Observable
发出一个 onError
事件,那么被合并的 Observable
也会将它发出,并且立即终止序列。
演示
let disposeBag = DisposeBag()
let subject1 = PublishSubject<String>()
let subject2 = PublishSubject<String>()
Observable.of(subject1, subject2)
.merge()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
subject1.onNext("🅰️")
subject1.onNext("🅱️")
subject2.onNext("①")
subject2.onNext("②")
subject1.onNext("🆎")
subject2.onNext("③")
输出结果:
🅰️
🅱️
①
②
🆎
③
map
通过一个转换函数,将 Observable
的每个元素转换一遍
map 操作符将源 Observable
的每个元素应用你提供的转换方法,然后返回含有转换结果的 Observable
。
演示
let disposeBag = DisposeBag()
Observable.of(1, 2, 3)
.map { $0 * 10 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
输出结果:
10
20
30
参考
just
创建 Observable
发出唯一的一个元素
just 操作符将某一个元素转换为 Observable
。
演示
一个序列只有唯一的元素 0:
let id = Observable.just(0)
它相当于:
let id = Observable<Int>.create { observer in
observer.onNext(0)
observer.onCompleted()
return Disposables.create()
}
interval
创建一个 Observable
每隔一段时间,发出一个索引数
interval 操作符将创建一个 Observable
,它每隔一段设定的时间,发出一个索引数的元素。它将发出无数个元素。
ignoreElements
忽略掉所有的元素,只发出 error
或 completed
事件
ignoreElements 操作符将阻止 Observable
发出 next
事件,但是允许他发出 error
或 completed
事件。
如果你并不关心 Observable
的任何元素,你只想知道 Observable
在什么时候终止,那就可以使用 ignoreElements 操作符。