İçeriğe geç

Promise + Alamofire kullanımı

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)
            }

 

 

 

Tarih:Promise

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2021 Kenan Atmaca