我想要的是这样的功能:
suspendCoroutineWithTimeout(timeout: Long, unit: TimeUnit, crossinline block: (Continuation<T>) -> Unit)
这与现有的
suspendCoroutine
基本相同函数,但如果块中提供的回调或任何内容在指定的超时时间内没有被调用,则协程将继续,但会出现 TimeoutException 或类似的情况。
最佳答案
您可以组合 withTimeout
和 suspendCancellableCoroutine
以一种直接的方式获得所需的效果:
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/