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

问题描述 投票:2回答:1

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

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

这项工作吗?

func asyncFunc(_ syncFunc:()->Int, _ completion:(Int)->()) -> Int {
    DispatchQueue.background.async{
        completion( syncFunc() )
    }
}
swift grand-central-dispatch nsoperationqueue
1个回答
2
投票

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

func asyncFunc(_ syncFunc: @escaping ()->Int, completion: @escaping (Int)->()) {
    DispatchQueue.global().async {
        completion( syncFunc() )
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.