Вместо использования PromiseKit
используйте OperationQueue
. Вместо магии вы поймете все до мелочей.
Очевидно, что потребуется больше кода, чем PromiseKit
, но он встроен в Apple SDK.
Пожалуйста, проверьте следующий фрагмент
// setup your operation queue
// typically done where you start sending the api request
// like viewDidLoad
// assumed that opQueue is declared as class's instance member
opQueue = OperationQueue.init()
opQueue.maxConcurrentOperationCount = 1 // ensure that only one operation will run at a time
opQueue.name = "Api Call Serializer"
opQueue.qualityOfService = QualityOfService.background
// after instantiating add a operation to the queue
opQueue.addOperation {
makeApiCall(url: first_url)
}
func makeApiCall(url: URL) {
//put your api call code here
YOUR_API_CALL({(responseData)// i have assumed that your api call will ending in a swift closure. If you use delegate, it will be same as following.
// your processing of api response
// build the next_url for pagination.
opQueue.addOperation {
makeApiCall(url: next_url)
}
})
}
Надеюсь, это поможет.