首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少阿拉莫火灾响应的回叫延迟?

如何减少阿拉莫火灾响应的回叫延迟?
EN

Stack Overflow用户
提问于 2022-09-01 09:45:22
回答 1查看 77关注 0票数 0

在对Alamofire上传请求调用.resume()之后,请求是成功的,在.uploadProgress闭包中,我看到数据在1-2秒内被传输。但是在触发.responseJSON闭包之前,需要几秒钟(4-8秒)。

因此,整个过程花费了超过4倍的时间比它应该,根据进度关闭。

我确实找到了一些关于同一主题的问题--但没有对如何防止这种长时间的拖延作出有益的解释-为什么这是-甚至更好-。

是什么导致了这种延迟以及如何防止它?

下面是一个产生延迟的例子。不再涉及线程/异步的内容。

代码语言:javascript
复制
    func makeUploadRequest(url: URL, data: UploadData, onDidFinish: @escaping (DataRequest, AttachmentData?) -> Void) -> DataRequest {
        let request = AF.upload(multipartFormData: { formData in
            formData.append(data.doc, withName: "doc", fileName: data.filename, mimeType: data.mimeType)
            formData.append(self.UUID().data(using: .utf8)!, withName: "vendor_id")
            formData.append(data.entityId.data(using: .utf8)!, withName: "entity_id")
            formData.append(data.entityType.data(using: .utf8)!, withName: "entity_type")
            formData.append(data.filename.data(using: .utf8)!, withName: "file_name")
        }, to: url, method: .post, headers: getHeader())
        
        request.responseJSON { response in
            print("response arrived")
            onDidFinish(request, self.processResponse(response))
        }
        
        request.uploadProgress { progress in
            print("Upload progress: \(progress.fractionCompleted)")
        }
        
        return request
    }

下面是一些不幸的不太有用的搜索结果:

Alamofire slow response

Alamofire slows down on big json responses

EN

回答 1

Stack Overflow用户

发布于 2022-09-01 10:28:41

就像很多次一样--一个解决方案在提出要求后就出现了。我成功地获得了与我连接到的服务器的一个负责任的后端开发的会话。他确认延迟发生在服务器上,而不是客户端。

所以它与阿拉莫火无关。

下面是这样的情况:当我发送包含图像的上传请求时,服务器将图像数据交给图像处理库,该库创建要保存的图像资源和缩略图资源,并将它们发送到另一个存储图像的服务器。只有在整个过程完成之后,api服务器才会放弃我的请求。

我怀疑这种图像处理和存储需要6-8秒的时间,但这是另一个主题。

堆栈溢出,我会删除这个问题,因为‘问题’与阿拉莫火无关,但似乎我不能。请让我知道,如果我应该以另一种方式处理这个问题。

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

https://stackoverflow.com/questions/73567313

复制
相关文章

相似问题

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