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.

时调用