【问题标题】:How could I cancel several requests with Alamofire?我如何使用 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 取消请求,但是怎么做??

标签: ios request alamofire


【解决方案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 中使用它
猜你喜欢
  • 1970-01-01
  • 2017-05-19
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 2016-12-29
  • 1970-01-01
  • 2015-04-22
相关资源
最近更新 更多