每次将后台线程限制为少于五个

时间:2019-04-17 06:54:21

标签: ios swift grand-central-dispatch nsoperationqueue

我想每次将后台线程限制为少于五个。从图库中选择一些文件时,我必须同时调用文件上传API。我必须多次调用相同的API,即如果我选择了4张图像,则必须在后台线程中同时调用四次相同的API。如果图像计数大于5,则我必须选择前五个图像并发出五个API请求,如果五个请求中的任何一个给出响应,则再选择一个图像并添加到后台线程。

应该执行相同的过程,直到所有20个图像API请求都给出响应为止。我正在使用Alamofire进行分段上传和MVVM设计模式。

Alamofire.upload(multipartFormData: { (multipartFormData) in
if imagepresent{
    for i in 0..<imgparameters.count {
        do {
            let documentData = try Data(contentsOf: imgparameters[i]["fileUrl"] as! URL, options: .dataReadingMapped)

            multipartFormData.append(documentData, withName: "attachments", fileName: "\(imgparameters[i]["fileName"] ?? "\(datestr)\(i).jpg")", mimeType: "\(imgparameters[i]["type"] ?? "image/jpg")")

        } catch let error {
            print(error.localizedDescription)
        }
    }
}
for (key, value) in parameters {
    multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}}, to:requestURL,method : methodType,headers : headerss)

{ (result) in

switch result {

case .success(let upload, _, let streamFileURL):

    self.uploadRequest = upload

    upload.uploadProgress(closure: { (Progress) in

    })
    upload.responseJSON { response in

        self.uploadRequest = nil

        if (response.error == nil)

        {
            self.saveCookies(response: response)
        }

        self.handleResponse(response: response, completionBlockX: completionBlock
    }
case .failure(let encodingError):
    print(encodingError)
 }
}

感谢您的快速解答。

0 个答案:

没有答案