美文网首页
DispatchGroup使用场景

DispatchGroup使用场景

作者: 吕建雄 | 来源:发表于2020-11-27 17:53 被阅读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

    }

相关文章

网友评论

      本文标题:DispatchGroup使用场景

      本文链接:https://www.haomeiwen.com/subject/inyxwktx.html