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() )
    }
}