Swift: 将同步函数转换为异步
Swift: Convert a Sync function to Async
如果你有同步函数,你会如何将其转换为异步函数?
func syncFunc() -> Int {
//Do something
}
这行得通吗?
func asyncFunc(_ syncFunc:()->Int, _ completion:(Int)->()) -> Int {
DispatchQueue.background.async{
completion( syncFunc() )
}
}
不,包含异步任务的函数不能 return 闭包体中的任何值,并且两个闭包都必须标记为 @escaping
func asyncFunc(_ syncFunc: @escaping ()->Int, completion: @escaping (Int)->()) {
DispatchQueue.global().async {
completion( syncFunc() )
}
}
如果你有同步函数,你会如何将其转换为异步函数?
func syncFunc() -> Int {
//Do something
}
这行得通吗?
func asyncFunc(_ syncFunc:()->Int, _ completion:(Int)->()) -> Int {
DispatchQueue.background.async{
completion( syncFunc() )
}
}
不,包含异步任务的函数不能 return 闭包体中的任何值,并且两个闭包都必须标记为 @escaping
func asyncFunc(_ syncFunc: @escaping ()->Int, completion: @escaping (Int)->()) {
DispatchQueue.global().async {
completion( syncFunc() )
}
}