kotlin - 是否可以暂停协程并超时?

标签 kotlin kotlin-coroutines

我想要的是这样的功能:

suspendCoroutineWithTimeout(timeout: Long, unit: TimeUnit, crossinline block: (Continuation<T>) -> Unit)

这与现有的 suspendCoroutine 基本相同函数,但如果块中提供的回调或任何内容在指定的超时时间内没有被调用,则协程将继续,但会出现 TimeoutException 或类似的情况。

最佳答案

您可以组合 withTimeoutsuspendCancellableCoroutine以一种直接的方式获得所需的效果:

suspend inline fun <T> suspendCoroutineWithTimeout(
    timeout: Long, unit: TimeUnit,
    crossinline block: (Continuation<T>) -> Unit
) = withTimeout(timeout, unit) {
    suspendCancellableCoroutine(block = block)
}

关于kotlin - 是否可以暂停协程并超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48974369/

相关文章:

android - Firestore 实时更新不适用于 recyclerview

java - 配置 Jackson 在 Spring Boot 2.0.0.M1 中使用 SNAKE_CASE "globally"

android - 使用 Work Manager API 每秒执行一次任务

java - 转换后如何修复丢失的日期时间?

android-studio - 发现多个文件具有独立于操作系统的路径 'META-INF/proguard/coroutines.pro'

android - runInTransaction block 内的挂起方法

android - 如何从 rxjava flatmap 调用协程用例

安卓 Lint : Kotlin Dispatchers unresolved reference but compilation working

kotlin-coroutines - kotlin协程,coroutineScope和withContext有什么区别

android - 如何从协程返回错误响应