需求:
假设有一个方法非常耗时,如果5s内没有返回,那么直接返回nil
答案:
遇到这样的问题,可以使用通知组,异步线程任务耗时,到一定时间内没返回,直接返回nil
func timeoutFun() -> String? {
var result: String? = "Normal"
let group: DispatchGroup = DispatchGroup.init()
let queue: DispatchQueue= DispatchQueue.init(label:"test.queue")
queue.async(group: group, execute: {
print("进入耗时方法")
sleep(6)
})
let timeoutResult: DispatchTimeoutResult = group.wait(timeout: DispatchTime.now()+5)
switch timeoutResult {
case .success:
print("success")
case .timedOut:
result =nil
print("timeout")
}
return result
}
网友评论