withTimeoutOrNull
是 Kotlin 协程库中的一个非常有用的函数,它允许你在指定的时间内执行一个代码块,如果在指定的时间内代码块没有执行完毕,那么它会返回null
,而不是抛出一个异常。这个函数在处理可能需要较长时间完成的操作,但又不想让程序因为等待这个操作而阻塞的场景中非常有用。
withTimeoutOrNull使用:
fun performDatabaseQuery(): String {
delay(1500)
return "Query result"
}
fun main() {
runBlocking {
val result = withTimeoutOrNull(1000.milliseconds) {
performDatabaseQuery()
}
if (result == null) {
println("Database query timed out.")
} else {
println(result)
}
}
}
结合suspendCancellableCoroutine来使用:
@OptIn(ExperimentalCoroutinesApi::class)
suspend fun main(): String = suspendCancellableCoroutine { ctn ->
runBlocking {
val result = withTimeoutOrNull(1000) {
delay(900) // 这里的时间不一定是900ms
"操作完成"
}
if (result == null) ctn.resume("操作超时") {} else ctn.resume(result) {}
}
}
// 调用
lifecycleScope.launch {
val result = main()
println("1111 : $result")
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » kotlin—— withTimeoutOrNull的介绍和使用场景
发表评论 取消回复