在Swift中,我可以使用下面的代码在7秒内调用一个函数,但我也可以在7秒之前随时取消它。Kotlin提供类似的功能吗?
// 1. call showTimeoutErrorLabel 7 seconds from now
perform(#selector(showTimeoutErrorLabel), with: nil, afterDelay: 7)
// 2. cancel the above perform() so that it won't fire off showTimeoutErrorLabel
NSObject.cancelPreviousPerformRequests(withTarget: self)
// or
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(showTimeoutErrorLabel), object: nil)
// the actual function
@objc func showTimeoutErrorLabel() { ... }
我在Handlers
、Timers
和Executors
上发现了一些Kotlin
帖子,但没有关于如何取消它们并在必要时稍后召回它们的信息。
2条答案
按热度按时间xa9qqrwz1#
你的问题有点令人困惑,因为你混合了语言和它运行的操作系统环境。Kotlin什么都没有,因为Kotlin没有计时器的概念。其实Swift也没有。这是你正在查看的操作系统库的一部分,如果你试图在Windows上编写Swift,它可能不存在。
所以你在文章中提到的每一件事都可以取消。它们都以不同的方式被取消。对于处理程序,可以使用removeCallbacksAndMessages()。这将删除任何已发送到处理程序的内容(如果尚未处理)。对于计时器,您可以对其调用cancel()。你应该使用哪一个取决于你想做什么,它们都有不同的优缺点。
hk8txs482#
我找到答案了here