RxSwiftでAPIを複数呼ぶよ
Firestoreで参照使ってガッチャンコさせてました。
struct A {
let id: String
let name: String
let bIDs: [String]
}
struct B {
let id: String
let name: String
}
func getA() -> Single<A> {...}
func getB(id: String) -> Single<B> {...}
みたいなとき👇のように toArray()
を駆使することで比較的シンプルにかけるみたい。
func getBList() -> Single<[B]> {
return getA().flatMap({ (a: A) -> Single<[B]> in
Observable.from(a.bIDs)
.flatMap({ (id: String) -> Single<B> in
getB(id: id)
}).toArray()
})
}
Bの順序を保ちたい場合は concatMap
を使えば良さげ。
最初にsubscribeをネストさせていたのはナイショ🤮
最近、RxSwift書き始めたのでもっとこう書くべきってのがあったら指摘ください..!
Author And Source
この問題について(RxSwiftでAPIを複数呼ぶよ), 我々は、より多くの情報をここで見つけました https://qiita.com/tsubasa_hiroe/items/76d453cbcff7cdcd7d14著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .