【发布时间】:2019-02-16 15:53:12
【问题描述】:
请看下面的代码:
backgroundthread.async {
return self.mycallback() //return string, int etc
}
我想从异步块中返回一个值。我不想要任何完成处理程序或任何其他解决方法。
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")
【问题讨论】:
-
您别无选择,只能使用完成处理程序。您不能从异步调用中返回值。
-
好的,有什么变通方法或自定义模板,我们可以使用。
-
我同意@rmaddy,完成处理程序是异步任务完成时处理结果的唯一方法。他们给它起了个好名字!
-
为什么要避免使用完成处理程序?您试图解决什么问题,而由于某种原因需要避免最简单和适当的解决方案?
-
这里和 Swift API 中有无数的例子。
标签: swift multithreading