我正在点击第一个 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
}
希望这有帮助。