背景:
项目里的发布图文的一个需求,在点击完发布按钮后发布过程中,取消当前发布内容。项目使用网络请求是Alamofire框架,在Alamofire的基础上用RXSwift写了一套网络管理工具。基层类Provider。因为每个网络请求都是有一个sessionManage来管理,先创建requestData,然后检查各种param,处理block,token等,再resume开启这个请求,然后这个请求就作为一个task由sessionManager管理,因此可以拿到sessionManager就可以找到对应的task,来取消网络请求。
实现:
注意:要拿到当前网络的sessionManager
///取消当前sessionManager下所有的请求
func cancleAllRequest() -> () {
manager.session.getAllTasks{ (urlSessionTask)in
urlSessionTask.forEach({ (task)in
task.cancel()
})
}
}
///取消当前sessionManager下某个请求
func cancleRequest(path:String) -> () {
manager.session.getAllTasks{ (urlSessionTask)in
urlSessionTask.forEach({ (task)in
iftask.currentRequest?.url?.path== path {
task.cancel()
}
})
}
}