我如何快速从异步块返回值

vik*_*kuu 1 multithreading swift

请查看以下代码:

backgroundthread.async {
    return self.mycallback() //return string, int etc
}
Run Code Online (Sandbox Code Playgroud)

我想从异步块返回一个值。我不想要任何完成处理程序或任何其他解决方法。

func getAppConfigFromDB(_ key: String) -> String 
{
   let value = String()
   backgroundthread.async {
      let inst = AppConfigDB.init(_APP_CONFIG_DB_PATH)
      value = inst.getConfigurationInfo(key) // I want to return from here.
   }
   return value
}


getAppConfigFromDB("path")
Run Code Online (Sandbox Code Playgroud)

Rak*_*tri 5

就像@rmaddy 说的那样,除了使用完成处理程序之外,您别无他法。

func getAppConfigFromDB(_ key: String, completion: @escaping ((String) -> Void)) {
    let value = String()
    backgroundthread.async {
        let inst = AppConfigDB.init(_APP_CONFIG_DB_PATH)
        value = inst.getConfigurationInfo(key) // I want to return from here.
        completion(value)
    }
}
Run Code Online (Sandbox Code Playgroud)

你像这样调用方法。

getAppConfigFromDB("") { (value) in
    // Use value to do something
}
Run Code Online (Sandbox Code Playgroud)