Alamofire取消網(wǎng)絡(luò)請(qǐng)求

背景:

? ? ? ? ?項(xiàng)目里的發(fā)布圖文的一個(gè)需求,在點(diǎn)擊完發(fā)布按鈕后發(fā)布過(guò)程中,取消當(dāng)前發(fā)布內(nèi)容。項(xiàng)目使用網(wǎng)絡(luò)請(qǐng)求是Alamofire框架,在Alamofire的基礎(chǔ)上用RXSwift寫(xiě)了一套網(wǎng)絡(luò)管理工具?;鶎宇怭rovider。因?yàn)槊總€(gè)網(wǎng)絡(luò)請(qǐng)求都是有一個(gè)sessionManage來(lái)管理,先創(chuàng)建requestData,然后檢查各種param,處理block,token等,再resume開(kāi)啟這個(gè)請(qǐng)求,然后這個(gè)請(qǐng)求就作為一個(gè)task由sessionManager管理,因此可以拿到sessionManager就可以找到對(duì)應(yīng)的task,來(lái)取消網(wǎng)絡(luò)請(qǐng)求。

實(shí)現(xiàn):

注意:要拿到當(dāng)前網(wǎng)絡(luò)的sessionManager

? ? ///取消當(dāng)前sessionManager下所有的請(qǐng)求

? ? func cancleAllRequest() -> () {

? ? ? ? manager.session.getAllTasks{ (urlSessionTask)in

? ? ? ? ? ? urlSessionTask.forEach({ (task)in

? ? ? ? ? ? ? ? task.cancel()

? ? ? ? ? ? })

? ? ? ? }

? ? }


? ? ///取消當(dāng)前sessionManager下某個(gè)請(qǐng)求

? ? func cancleRequest(path:String) -> () {

? ? ? ? manager.session.getAllTasks{ (urlSessionTask)in

? ? ? ? ? ? urlSessionTask.forEach({ (task)in

?? ? ? ? ? ? ? ?iftask.currentRequest?.url?.path== path {

? ? ? ? ? ? ? ? ? ? task.cancel()

? ? ? ? ? ? ? ? }

? ? ? ? ? ? })

?? ? ? ?}

? ? }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容