Swift。如何从闭包中 return 一个函数
Swift. How to return a function from a closure
我有一个关于关闭的问题
function AA(){
localPlayer.authenticateHandler{
//…
if trigger {
retrun
}
}
dosomething()
}
在上面的代码中,
我想编写一个代码,当异步回调调用的 authenticateHandler 闭包中满足 trigger
时 return 到 AA()
函数。
上面代码的结果是
当trigger
发生时,只return闭包,下面执行dosomething()
方法。
有什么办法
我的英语水平很差,但谢谢你的帮助。
闭包不支持 return 语句。而是在主线程中使用完成块来执行任务:
即
function AA( completion: @escaping (Result<[Return Type], Error>) -> Void) {
localPlayer.authenticateHandler{
//…
if trigger {
DispatchQueue.main.async {
completion(//Whatever Return Value)
}
}
dosomething()
}
}
闭包不支持return语句。
这样做。
在这里我使用字符串比较来显示完成块将如何工作。
func call() {
compareString(str1: "hey", str2: "hey") { isMatch in
if isMatch! { //Trigger
self.doSomething()
}
}
}
func compareString(str1:String,str2:String,completion:@escaping ((Bool?) -> Void)) {
if str1 == str2 {
completion(true)
}else {
completion(false)
}
}
func doSomething() {
}
不是这样的。同步函数不能等待异步函数的结果。给AA一个回调闭包,当authenticateHandlerreturns.
时调用
我有一个关于关闭的问题
function AA(){
localPlayer.authenticateHandler{
//…
if trigger {
retrun
}
}
dosomething()
}
在上面的代码中,
我想编写一个代码,当异步回调调用的 authenticateHandler 闭包中满足 trigger
时 return 到 AA()
函数。
上面代码的结果是
当trigger
发生时,只return闭包,下面执行dosomething()
方法。
有什么办法 我的英语水平很差,但谢谢你的帮助。
闭包不支持 return 语句。而是在主线程中使用完成块来执行任务:
即
function AA( completion: @escaping (Result<[Return Type], Error>) -> Void) {
localPlayer.authenticateHandler{
//…
if trigger {
DispatchQueue.main.async {
completion(//Whatever Return Value)
}
}
dosomething()
}
}
闭包不支持return语句。
这样做。 在这里我使用字符串比较来显示完成块将如何工作。
func call() {
compareString(str1: "hey", str2: "hey") { isMatch in
if isMatch! { //Trigger
self.doSomething()
}
}
}
func compareString(str1:String,str2:String,completion:@escaping ((Bool?) -> Void)) {
if str1 == str2 {
completion(true)
}else {
completion(false)
}
}
func doSomething() {
}
不是这样的。同步函数不能等待异步函数的结果。给AA一个回调闭包,当authenticateHandlerreturns.
时调用