我想在事件发生后 10 秒内运行一段代码,但我希望能够取消它,这样如果在这 10 秒之前发生某些事情,代码将不会在 10 秒过去后运行。
我一直在使用这个,但它是不可取消的:
static func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure
)
}
我怎样才能做到这一点?
斯威夫特 3 有DispatchWorkItem
:
let task = DispatchWorkItem { print("do something") }
// execute task in 2 seconds
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2, execute: task)
// optional: cancel task
task.cancel()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)