我如何使用 Alamofire 取消多个请求?
Posted
技术标签:
【中文标题】我如何使用 Alamofire 取消多个请求?【英文标题】:How could I cancel several requests with Alamofire? 【发布时间】:2018-01-04 16:43:44 【问题描述】:我想取消一些请求,但不是全部。 现在我是这样的:
func cancelAllRequests()
let sessionManager = Alamofire.SessionManager.default
sessionManager.session.getTasksWithCompletionHandler dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach $0.cancel()
uploadTasks.forEach $0.cancel()
downloadTasks.forEach $0.cancel()
,但它会取消所有请求。我如何区分请求?
【问题讨论】:
* 我需要用相同的 url 取消请求,但是怎么做?? 【参考方案1】:如果你知道请求或 url,你可以写这样的东西来取消特定的任务
func cancellRequest(for request: URLRequest)
Alamofire.SessionManager.default.session.getAllTasks (tasks) in
_ = tasks
.filter( $0.originalRequest?.url?.path == request.url?.path )
.map( $0.cancel() )
【讨论】:
我在哪里使用我的网址? .filter 和 .map 怎么办? 在函数中像参数一样使用你的 url:cancellRequest(for url: URL)。在关闭的过滤器中写下这个 $0.originalRequest?.url == url。过滤器中的闭包会将数组中的每个值与条件进行比较,并将条件相等的元素留在闭包中。地图填充将闭包中的条件应用于数组中的每个元素 你如何在 alamofire 5 中使用它以上是关于我如何使用 Alamofire 取消多个请求?的主要内容,如果未能解决你的问题,请参考以下文章
在 swift 中使用 Alamofire 取消 api 请求