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

问题描述 投票:0回答:1

我正在点击第一个 API,它会在 60 秒内给出响应,其中第二个 API 需要在停止/取消第一个 API 请求/响应后点击并立即获得第二个 API 响应,但在我的情况下,第一个 API 被取消,第二个 API 响应无法得到。

我什至尝试过使用 Alamofire 和默认 URLSession 来实现相同的目的。

ios swift xcode swift4
1个回答
1
投票

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

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.