我想从三个不同的 API 中获取数据,然后将其保存在数据库中。因此,每个查询的数据应该在操作后分开。如何用 RxSwift 做到这一点?压缩?在我的示例中,我只使用了两个 URL,但这只是示例。
查询服务:
import Foundation
import RxSwift
class QueryService {
let albumsURL = URL(string: "https://jsonplaceholder.typicode.com/albums")!
func fetchAlbums() -> Observable<[Album]> {
return Observable.create { observer -> Disposable in
let task = URLSession.shared.dataTask(with: self.albumsURL) { data, _, _ in
guard let data = data else {
observer.onError(NSError(domain: "", code: -1, userInfo: nil))
return
}
do {
let albums = try JSONDecoder().decode([Album].self, from: data)
observer.onNext(albums)
} catch {
observer.onError(error)
}
}
task.resume()
return Disposables.create{
task.cancel()
}
}
}
func fetchUsers() -> Observable<[User]> {
return Observable.create { observer -> Disposable in
let task = URLSession.shared.dataTask(with: URL(string: "https://jsonplaceholder.typicode.com/users")!) { data, _, _ in
guard let data = data else {
observer.onError(NSError(domain: "", code: -1, userInfo: nil))
return
}
do {
let users = try JSONDecoder().decode([User].self, from: data)
observer.onNext(users)
} catch {
observer.onError(error)
}
}
task.resume()
return Disposables.create{
task.cancel()
}
}
}
}