我試圖為我的函式validateFields()回傳一個由異步代碼塊(來自我的完成處理程式)產生的值,然而我不確定如何做到這一點。
func validateFields() -> Bool<
{
//Other else if statements[/span]。
//......
else if !(usernameTextField.text!.isEmpty)
{
var retVal = false
isUnique { (bool) in
retVal = bool
}
print("this is the RET VALUE: " String(retVal)
//這個列印陳述句沒有回傳正確的值。
if retVal == false { return retVal }
}
errorLabel.text = " "
return true
}
正如你所看到的,它不起作用,我需要在isUnique中為我的整個函式回傳bool。
uj5u.com熱心網友回復:
你不能存盤isUnique的閉合結果,然后立即回傳,因為isUnique將需要盡可能長的時間來完成任何任務,這是
你想要像下面這樣,completion在所有路徑上被呼叫,但是只有一次:
func validateFields(completion: (Bool) -> Void) {
//Other else if statements //Other else if statements
//...。
if .../span> {
/* ... */
} else if ! (usernameTextField.text!.isEmpty) {
var retVal = false
isUnique { (bool) in
print("this is the RET VALUE: " String(bool)
完成(bool)
}
} else {
errorLabel.text = " "/span>
completion(true)
}
}
呼叫者:
validateFields { result in
print("result: (result)")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318068.html
標籤:
上一篇:承諾永不落空-NodeJS
