func passcodeViewController(_ passcodeViewController: TOPasscodeViewController, isCorrectCode code: String) -> Bool {
let userDefault = UserDefaults.standard
let tokenPinCode = userDefault.string(forKey: "tokenPinCode")
let mailData = self.emailField.text
let dataStruct = mailData!+"|"+tokenPinCode!
print("1")
self.checkToken(code: dataStruct) { (response) in
if(response[0] == "OK"){
print("2")
self.alertPasswordChange(text: "Podaj nowe hasło", code: dataStruct)
}else{
self.standardAlert(title: "Znaleziono błędy", message: "Podany kod jest błedny", ok: "Rozumiem")
self.werifyButton.isEnabled = true
}
}
print("3")
return false
}
函数返回:打印 -> 1 -> 3 -> 2
如何实现效果:打印 -> 1 -> 2 -> 3
最佳答案
使您的函数无效并传递可以处理 bool 值的完成处理程序。
func passcodeViewController(_ controller: Controller, code: String, @escaping handler: (Bool) -> ()) {
// Your logic
asyncRequest(...) {
response in
let result = ... // find whether code ok
handler(result)
}
}
你可以这样调用它:
passcodeViewController(controller, code: "$&36_$") {
(isOk: Bool) in
print(3)
print("code is ok: \(isOk)")
}
关于ios - Swift 函数异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462799/