我需要对服务器进行大约278次调用,它似乎适用于前50-100左右,但之后的所有调用都获得了Request已经超时的错误。我正在使用OperationQueue。任何人都可以看到我做错了什么,或者告诉我如何正确有效地做到这一点?我已经尝试添加waitUntilFinished,设置maxConcurrentOperationCount = 1并使用信号量,它只是冻结应用程序。如果有另一种方式,我很乐意听到它。
temp.capacity()
和RequestManager是使用AlamoFire和SwiftyJSON的调用
for ID in IDs {
guard let url = URL(string: baseURL + APIurl.kURL + "/" + ID) else {
return
}
if let headers = getHeaders() {
let operationQueue: OperationQueue = OperationQueue()
let operation1 = BlockOperation() {
RequestManager().makeRequest(withURL: url, headers: headers) { (response, error) in
if error != nil {
print("error downloading \(String(describing: url))")
print("errorDesc \(String(describing: error?.localizedDescription))")
}
guard let results = response else {
return
}
print("downloaded \(url)")
// save to core data
}
}
operationQueue.addOperation(operation1)
}
}
}