Pau*_*aul 29 arrays swift rx-swift
我有一个Thing
对象数组,我想ConvertedThing
使用返回的异步函数转换为对象Observable<ConvertedThing>
.
我想创建一个Observable<[ConvertedThing]>
在所有转换完成后发出一个值.
如何实现这一目标?任何帮助非常感谢!
ken*_*ytm 36
您可以使用.merge()
将可观察数组合并到单个可观察对象中,然后使用.toArray()
它们将它们作为单个事件中的列表.
对于RxSwift 3+使用:
let arrayOfObservables: [Observable<E>] = ...
let singleObservable: Observable<E> = Observable.from(arrayOfObservables).merge()
let wholeSequence: Observable<[E]> = singleObservable.toArray()
Run Code Online (Sandbox Code Playgroud)
对于以前的版本:
let arrayOfObservables: [Observable<E>] = ...
let singleObservable: Observable<E> = arrayOfObservables.toObservable().merge()
let wholeSequence: Observable<[E]> = singleObservable.toArray()
Run Code Online (Sandbox Code Playgroud)
red*_*t84 23
对于未来的读者:
当所有可观察序列完成时,使用.merge()
和.toArray()
将发出单个元素.如果任何可观察物不断发射,则不会发射或完成.
每次任何可观察的更改时,使用.combineLatest()
将返回Observable
发出完整列表的内容:
let arrayOfObservables: [Observable<E>] = ...
let wholeSequence: Observable<[E]> = Observable.combineLatest(arrayOfObservables) { $0 }
Run Code Online (Sandbox Code Playgroud)