Swift:将同步功能转换为异步

时间:2019-11-24 10:27:56

标签: swift grand-central-dispatch nsoperationqueue

如果您具有同步功能,如何将其转换为异步功能?

func syncFunc() -> Int {
    //Do something
}

这项工作可以吗?

func asyncFunc(_ syncFunc:()->Int, _ completion:(Int)->()) -> Int {
    DispatchQueue.background.async{
        completion( syncFunc() )
    }
}

1 个答案:

答案 0 :(得分:2)

否,包含异步任务的函数不能从闭包主体返回任何值,并且两个闭包都必须标记为@escaping

func asyncFunc(_ syncFunc: @escaping ()->Int, completion: @escaping (Int)->()) {
    DispatchQueue.global().async {
        completion( syncFunc() )
    }
}