[英]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.