簡體   English   中英

Swift:鏈接多個網絡請求,Alamofire

[英]Swift: Chain multiple network request, Alamofire

我有一個關於鏈接更多網絡請求(Alamofire)的問題,但請求的數量有時是 4 有時是 9 等,這取決於目標配置。 我有一個儀表板視圖控制器,並且 VC 有 4-9 個嵌入式 VC,每個人都必須從 API 獲取一些數據,這就是問題所在,所有這些都嘗試“同時”獲取,但其中很多都失敗了,隨機。

我使用信號量解決這個問題,但有時請求失敗,不知道為什么。 我認為一個請求會阻止另一個請求或類似的請求。

例如,我有:

let dispatchQueue = DispatchQueue.global(qos: .background)
        dispatchQueue.async {
        if MDUtilites.isMediaPresent() {
                let _ = self.fetchMediaList()
                self.semaphore.wait()
                
            }
}

我有大約 10 個這樣的代碼塊,func 是:

func fetchMediaList() {
    MDApiManager.sharedInstance.fetchMediaList { (dict, status) in
        switch (status) {
        case .failed(let code, _, let description):
            print("failed:")
            print(code)
            print(description)
            self.semaphore.signal()
        case .success(_, _ , _):
            print("success")
            
            if let data = dict,
                let list = data.parseWith(type: MediaBase.self)?.list {
                self.newMedia = list
                NotificationCenter.default.post(name: Notification.Name(rawValue: MEDIA_UPDATE), object: nil)
                //                    self.mediaListSections = list
                //                    self.getCategories(data: list)
            }
            self.semaphore.signal()
        case .unknown:
            print("DEBUG: unknown fetchMediaList")
            self.fetchMediaList()
        //                self.semaphore.signal()
        case .error(let aError):
            print(aError)
            self.semaphore.signal()
        }
    }
}

有人可以同時通過更多請求幫助解決此問題,信號量有時有效有時無效。

這是代碼中的一些錯誤信號量正常工作

您不需要為您的請求使用semaphore 由於您的請求是異步/相互獨立執行的,根據請求的類型,執行需要時間。 當它加載到內存中時,你的每個controller獲取這個請求。 ViewDidLoad()獲取它們。 確保將多個controllers正確添加到parent controller

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM