如何从一个可观察对象数组创建一个数组的可观察对象?
How do I create an observable of an array from an array of observables?
我有一个包含 Thing
个对象的数组,我想使用 returns Observable<ConvertedThing>
.
的异步函数将其转换为 ConvertedThing
个对象
我想创建一个 Observable<[ConvertedThing]>
在所有转换完成后发出一个值。
如何实现?非常感谢任何帮助!
您可以使用 .merge()
to combine the array of observables into a single observable, and then use .toArray()
在单个事件中将它们作为列表获取。
对于 RxSwift 3+ 使用:
let arrayOfObservables: [Observable<E>] = ...
let singleObservable: Observable<E> = Observable.from(arrayOfObservables).merge()
let wholeSequence: Observable<[E]> = singleObservable.toArray()
对于以前的版本:
let arrayOfObservables: [Observable<E>] = ...
let singleObservable: Observable<E> = arrayOfObservables.toObservable().merge()
let wholeSequence: Observable<[E]> = singleObservable.toArray()
对于未来的读者:
使用 .merge()
and .toArray()
将在所有可观察序列完成时发出单个元素。如果任何 observables 持续发射,它将不会发射或完成。
使用 .combineLatest()
将 return 一个 Observable
每次任何可观察到的变化都会发出完整列表:
let arrayOfObservables: [Observable<E>] = ...
let wholeSequence: Observable<[E]> = Observable.combineLatest(arrayOfObservables) { [=10=] }
我有一个包含 Thing
个对象的数组,我想使用 returns Observable<ConvertedThing>
.
ConvertedThing
个对象
我想创建一个 Observable<[ConvertedThing]>
在所有转换完成后发出一个值。
如何实现?非常感谢任何帮助!
您可以使用 .merge()
to combine the array of observables into a single observable, and then use .toArray()
在单个事件中将它们作为列表获取。
对于 RxSwift 3+ 使用:
let arrayOfObservables: [Observable<E>] = ...
let singleObservable: Observable<E> = Observable.from(arrayOfObservables).merge()
let wholeSequence: Observable<[E]> = singleObservable.toArray()
对于以前的版本:
let arrayOfObservables: [Observable<E>] = ...
let singleObservable: Observable<E> = arrayOfObservables.toObservable().merge()
let wholeSequence: Observable<[E]> = singleObservable.toArray()
对于未来的读者:
使用 .merge()
and .toArray()
将在所有可观察序列完成时发出单个元素。如果任何 observables 持续发射,它将不会发射或完成。
使用 .combineLatest()
将 return 一个 Observable
每次任何可观察到的变化都会发出完整列表:
let arrayOfObservables: [Observable<E>] = ...
let wholeSequence: Observable<[E]> = Observable.combineLatest(arrayOfObservables) { [=10=] }