GCD 终止请求

GCD terminate request

我想在延迟后向服务器发送请求,但如果用户更改了 UITextFiled 的状态,则应终止此请求。我现在拥有的是

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {  
    sessionManager.session.invalidateAndCancel()
    APIModel().searchRequest()...
}

但它实际上并没有阻止请求到达服务器。我想我应该使用 GDC delay 在发送请求之前等待一秒钟,然后,如果 UITextField 发生变化,则终止它。但是我找不到这种逻辑实现的例子。

您不能"terminate"请求。

您可以使用 "cancelled" 属性 创建一个对象。然后您分派访问该对象的代码,并在适当的时候检查 "cancelled" 属性 是否为真。从外面看,您可以在需要时将 cancelled 设置为 true 。

如果操作设法完成并检测到它已被取消,那么它不应产生任何错误消息,也不会执行任何其他操作,因为它已被取消。