我正在点击第一个 api,它在 60 秒内给出响应,其中第二个 api 需要在停止/取消第一个 api 请求/响应后命中并立即获得第二个 api 响应。但就我而言,第一个 api 被取消,第二个 api 响应无法获得。
我什至尝试过使用Alamofire和默认URLSession。
您可以使用 DispatchWorkItem 并执行去抖动,如果需要命中第二个 api,这将有助于取消您的第一个 api。
private var pendingRequestWorkItem : DispatchWorkItem? // your work item
//function which calls your API being hit
func getData() {
// cancels the first api or the the api currently being hit
self.pendingRequestWorkItem?.cancel()
let requestWorkItem = DispatchWorkItem { [weak self] in
self?.getDataFromAPI()
}
self.pendingRequestWorkItem = requestWorkItem
//this debounces for 0.5 secs, you can configure it as per your requirement(debouncing time you want)
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500), execute: requestWorkItem)
}
func getDataFromAPI() {
//your function which hits the API
}
希望这有帮助。