對可觀察到的整個序列進行操作的操作符。
toArray
將可觀察序列轉(zhuǎn)換為數(shù)組刊殉,將該數(shù)組作為一個新的單元素可觀察序列發(fā)出殉摔,然后終止。
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
以初始值開始记焊,然后將一個累加器閉包應(yīng)用于可觀察序列發(fā)出的所有元素逸月,并將聚合結(jié)果作為一個單元素可觀察序列返回。
let disposeBag = DisposeBag()
Observable.of(10, 100, 1000)
.reduce(1, accumulator: +)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag) // 1111
concat
以順序的方式從可觀察序列的內(nèi)部可觀察序列中加入元素遍膜,等待每個序列在下一個序列發(fā)出元素之前成功地終止碗硬。
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(??)