如何在swift 4中取消第一个API响应并点击第二个api?

bvn4nwqk  于 2023-01-04  发布在  Swift
关注(0)|答案(1)|浏览(136)

我正在点击第一个API,它在60秒内给出响应,其中第二个api需要在停止/取消第一个api请求/响应后点击,并立即获得第二个api响应。但在我的情况下,第一个api被取消,第二个api响应无法获得。
我甚至尝试了Alamofire和默认的URLSession以及相同的。

webghufk

webghufk1#

您可以使用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
}

希望这个有用。

相关问题