Observable<ConvertedThing>
を返す非同期関数を使用して、Thing
オブジェクトに変換したいConvertedThing
オブジェクトの配列があります。
すべての変換が完了したときに1つの値を出力するObservable<[ConvertedThing]>
を作成したいと思います。
どうすればこれを達成できますか?助けていただければ幸いです!
.merge()
を使用してオブザーバブルの配列を単一のオブザーバブルに結合し、次に .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()
および .toArray()
を使用すると、すべての観測可能なシーケンスが完了すると、単一の要素が放出されます。オブザーバブルのいずれかが放出し続ける場合、放出も完了もしません。
.combineLatest()
を使用すると、観察可能な変更があるたびに完全なリストを出力するObservable
が返されます。
let arrayOfObservables: [Observable<E>] = ...
let wholeSequence: Observable<[E]> = Observable.combineLatest(arrayOfObservables) { $0 }