DispatchGroup使用场景

2020-11-27  本文已影响0人  吕建雄

需求:

假设有一个方法非常耗时,如果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

    }

上一篇 下一篇

猜你喜欢

热点阅读