美文网首页
延迟执行

延迟执行

作者: 流年易逝_李 | 来源:发表于2018-04-07 10:04 被阅读3次

    let time: TimeInterval = 1.0

    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + time) {

        //code    

        print("1 秒后输出")

    }

    以下来自喵神

    import Foundation

    typealias Task = (_ cancel : Bool)-> Void

    func delay(_ time: TimeInterval, task:@escaping()->())->  Task? {

         func dispatch_later(block:@escaping()->()) { 

               let t = DispatchTime.now()+time

               DispatchQueue.main.asyncAfter(deadline: t, execute: block)

          }

          var closure:(()->Void)? = task

          var result:Task?

          let delayedClosure:Task = { cancel in

                 if let internalClosure = closure {

                        if (cancel ==false) {

                                DispatchQueue.main.async(execute: internalClosure)

                        }       

                   }

                   closure = nil

                   result=nil

            }

           result = delayedClosure

           dispatch_later {

                 if let delayedClosure = result {

                        delayedClosure(false)        

                 }    

            }

            return result

    }

    func cancel(_ task: Task?) {

            task?(true) 

    }

    /*****使用*****/

    //调用

    delay(2) {

    print("2 秒后输出")

    }

    //取消

    let task = delay(5) {

    print("拨打 110")

    }

    // 仔细想一想..// 还是取消为妙..

    cancel(task)

    相关文章

      网友评论

          本文标题:延迟执行

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