gpt4 book ai didi

ios - Swift:链接多个网络请求,Alamofire

转载 作者:行者123 更新时间:2023-11-29 05:11:07 24 4
gpt4 key购买 nike

我有一个关于链接更多网络请求(Alamofire)的问题,但请求的数量有时可以是 4 个,有时可以是 9 个等,这取决于目标配置。我有一个仪表板 View Controller ,VC 有 4-9 个嵌入式 VC,每个人都必须从 API 获取一些数据,这就是问题,所有这些都尝试“同时”获取,但其中很多随机失败。

我使用信号量来解决这个问题,但有时请求失败,不知道为什么。我认为一个请求会阻止另一个请求或类似的请求。

例如我有这个:

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

}
}

我有大约 10 个这样的代码块,其功能是:

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() 中获取它们。确保您将多个 Controller 正确添加到您的 Controller 中。

关于ios - Swift:链接多个网络请求,Alamofire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59678917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com