Swift 带while循环的Alamofire请求
我需要检查循环中的处理状态。需要获取请求Swift 带while循环的Alamofire请求,swift,Swift,我需要检查循环中的处理状态。需要获取请求 func check( completion: @escaping (Bool)->()){ let url = URL(string: "url")! var curStatus = "processing" let serialQueue = DispatchQueue(label: "serialQueue") while curStatus == "processing" { serialQ
func check( completion: @escaping (Bool)->()){
let url = URL(string: "url")!
var curStatus = "processing"
let serialQueue = DispatchQueue(label: "serialQueue")
while curStatus == "processing" {
serialQueue.async{
let runLoop = CFRunLoopGetCurrent()
Alamofire.request(url, method: .get, parameters: nil)
.responseJSON { response in
guard response.result.isSuccess else {
completion(false)
return
}
guard let value = response.result.value as? [String: Any] else {
completion(false)
return
}
curStatus = value["status"] as? String ?? "error"
if curStatus == "ok" {
// do something
completion(true)
return
}
if curStatus == "error"{
completion(false)
return
}
CFRunLoopStop(runLoop)
}
sleep(2)
CFRunLoopRun()
}
}
}
问题:没有回应。我把断点放进去了
guard response.result.issucess else…
它并没有调用它,而是一个断点
Alamofire.request(url,…
工作正常
我该如何解决这个问题
对不起,我的英语。我只是在学习。我真的认为你不应该为了检查服务器端是否成功而不断地发出网络请求。我认为你需要重新设计你的用户体验 然而,为了解决你想做的事情,我建议使用定时器 伪代码:
let minuteInterval = TimeInterval.minute() * 5
var isMakingRequest = false
let timer = NSTimer.scheduledTimerWithTimeInterval(minuteInterval, target: self, selector: #selector(checkServer), userInfo: nil, repeats: true)
@objc func checkServer() {
guard !isMakingRequest else { return }
isMakingRequest = true
Do network request {
self.isMakingRequest = false
}
}
@Mocha nothing,它没有调用它是问题所在,如果我不能使用while循环,我如何解决我的任务?(每隔几秒钟检查请求的结果)@Mocha是的,没有循环它工作得很好我不建议每隔几秒钟就不断地发出网络请求..你想做什么?@Mocha我将文件加载到服务器,我必须检查文件准备好了吗下载回来,我想:每n秒检查一次文件是否准备好,如果准备好了,然后下载