我如何使用 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 请求

如何使用操作查询发出多个 Alamofire 请求

如何使用 RxAlamofire 取消先前的请求?

如何在 Swift 4 中使用 Alamofire 上传具有其他参数的多个图像

取消对 Alamofire 图像的请求

在完成之前中止 Alamofire 下载请求