合并两个单一响应 RXSwift

roo*_*oof 3 ios swift rx-swift

我有两个包含同一对象的数组的 Single 值。我想合并它们并应用地图并将它们作为单个返回。是否可以?

所以我有这个:

func fetchTripList(type: TripType) -> Single<[Trip]> {
    let response: Single<APITripListResponse> = request(target: TripsAPI.fetchUpcomingTripList)
    return response.map { $0.toModel() }
}
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

func fetchTripList(type: TripType) -> Single<[Trip]> {
    let responseUpcoming: Single<APITripListResponse> = request(target: TripsAPI.fetchUpcomingTripList)
    let responsePast: Single<APITripListResponse> = request(target: TripsAPI.fetchPastTripList)
    //'Declare a Singe variable <[Trip]> called X merge both responseUpcoming and responsePast, apply to them map { $0.toModel() } and return it'

    return X
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助。

And*_*rew 6

如果 thinkmerge运算符正是您想要的,它会等到您从两个请求中获取数据,然后将它们合并到一个数组中,您可以使用 进行修改map。之后您可以将其转换为single.

所以它看起来像这样:

Observable.merge(responseUpcoming.asObservable(), responsePast.asObservable()).map { $0.toModel() }.asSingle()
Run Code Online (Sandbox Code Playgroud)