Swift3 如何使任务在Swift 3中等待完成

Swift3 如何使任务在Swift 3中等待完成,swift3,xcode8,alamofire,ios10,Swift3,Xcode8,Alamofire,Ios10,我正在使用Alamofire向HTTP服务器发送登录请求。它返回一个JSON响应。我的问题是主线代码在.responseJSON之前完成。在从函数返回之前,如何等待响应返回 var ret: Bool = true Alamofire.request( URL(string: "http://localhost:8081/login/iPhone")!, method: .post, parameters: ["email":"test@test.

我正在使用Alamofire向HTTP服务器发送登录请求。它返回一个JSON响应。我的问题是主线代码在.responseJSON之前完成。在从函数返回之前,如何等待响应返回

var ret: Bool = true
Alamofire.request(
        URL(string: "http://localhost:8081/login/iPhone")!,
        method: .post,
        parameters: ["email":"test@test.test", "password":"test", "uuid":String(describing: UIDevice.current.identifierForVendor!.uuidString)],
        headers: [:])
    .validate()
    .responseJSON{(response) -> Void in
        do {
            guard response.result.isSuccess else {
                throw FieldError.fetchError(responseError: response.result.error)
            }
            guard let value = response.result.value as? [String: Any],
                    let status = value["status"] as? String,
                    let message = value["message"] as? String else {
                throw FieldError.messageFormatError
            }
            switch status {
                case "Login suggess":
                    break
                default:
                    throw FieldError.fieldServerError(status: status, message: message)
            }
        } catch {
            ret = false
            debugPrint(error)
        }
    }
return ret

您始终可以使用全局

typealias DownloadComplete = () -> ()
下一个在func中使用的是json

func yourFunc(completed: @escaping DownloadComplete)
下载后使用

completed()

代码在.responseJSON.Don't wait中执行do之前到达return语句。使用完成处理程序返回布尔返回值和错误。我假设responseJSON中的块是完成处理程序。问题是如何防止IOS平台上的登录过程在完成处理程序完成之前完成。这样做了。我真的错过了完整的