首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift:链接多个网络请求,Alamofire

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

Stack Overflow用户
提问于 2020-01-10 17:34:42
回答 1查看 205关注 0票数 0

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

我使用信号量来解决这个问题,但有时请求会失败,不确定原因。我认为一个请求阻止了另一个或类似的东西。

举个例子,我有:

代码语言:javascript
复制
let dispatchQueue = DispatchQueue.global(qos: .background)
        dispatchQueue.async {
        if MDUtilites.isMediaPresent() {
                let _ = self.fetchMediaList()
                self.semaphore.wait()
                
            }
}

我有大约10个这样的代码块,func是:

代码语言:javascript
复制
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()
        }
    }
}

有没有人可以同时用更多的请求来帮助解决这个问题,信号量有时工作,有时不起作用。

这是代码中的一些bug,信号量应该正常工作

EN

回答 1

Stack Overflow用户

发布于 2020-01-10 17:50:25

你不需要为你的请求使用semaphore。由于您的请求是异步/独立执行的,因此根据请求类型的不同,执行需要时间。当这个请求加载到内存中时,您的每个controller都会获取它。在ViewDidLoad()中获取它们。确保正确地将多个controllers添加到parent controller中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59678917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档