Merhabalar bu yazımda Swift ile Promise ve Alamofire kullanarak nasıl efektif servis istekleri gönderebileceğinizi göstereceğim.
Bundan önceki yazımda Promise yapısına giriş yapmıştık. Bu yazımda Promise Alamofire extension ile birlikte servislere bu yapıda istek gönderip, kolay bir şekilde response alacağız.
Aşağıda yazdığım örneği inceleyelim.
struct Httpbin: Decodable { var origin:String! var url:String! } class NetworkService: NSObject { func getData() -> Promise<Httpbin> { return Promise<Httpbin>.init(resolver: { (resolver) in Alamofire.request("https://httpbin.org/get", method: .get).responseDecodable(Httpbin.self).done { data in resolver.fulfill(data) }.catch { error in resolver.reject(error) } }) } }
.responseDecodable ile birlikte hızlı bir şekilde mapping işlemi gerçekleştiriyoruz. Bu sayede fonksiyonu çağırdıktan sonra zincir üzerinde direkt olarak gerekli veriye erişiyoruz.
service.getData().done { val in print(val.origin) }.catch { err in print(err.localizedDescription) }
Bunun yanı sıra async olarak farklı istekleri aynı anda çağırıp, response alabiliriz.
firstly { when(fulfilled: service.getData(),service.getData()) }.done { data1,data2 in print(data1, data2) }.catch { error in print(error) }
İlk Yorumu Siz Yapın