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



我正在点击第一个 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
}

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新