对可观察到的整个序列进行操作的操作符。
toArray
将可观察序列转换为数组,将该数组作为一个新的单元素可观察序列发出,然后终止。
let disposeBag = DisposeBag()
Observable.range(start: 1, count: 10)
.toArray()
.subscribe { print($0) }
.disposed(by: disposeBag) // next([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) completed
reduce
以初始值开始,然后将一个累加器闭包应用于可观察序列发出的所有元素,并将聚合结果作为一个单元素可观察序列返回。
let disposeBag = DisposeBag()
Observable.of(10, 100, 1000)
.reduce(1, accumulator: +)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag) // 1111
concat
以顺序的方式从可观察序列的内部可观察序列中加入元素,等待每个序列在下一个序列发出元素之前成功地终止。
let disposeBag = DisposeBag()
let subject1 = BehaviorSubject(value: "🍎")
let subject2 = BehaviorSubject(value: "🐶")
let variable = Variable(subject1)
variable.asObservable()
.concat()
.subscribe { print($0) }
.disposed(by: disposeBag)
subject1.onNext("🍐")
subject1.onNext("🍊")
variable.value = subject2
subject2.onNext("I would be ignored")
subject2.onNext("🐱")
subject1.onCompleted() // inner subject2.onNext("🐱")
subject2.onNext("🐭") // next(🍎) next(🍐) next(🍊) next(🐱) next(🐭)