我想要的是这样一个函数:
suspendCoroutineWithTimeout(timeout: Long, unit: TimeUnit, crossinline block: (Continuation<T>) -> Unit)
这与现有的suspendCoroutine
函数基本相同,但是如果在指定的超时时间内没有调用回调函数或块中提供的任何函数,则corutine会继续,但会出现TimeoutException或类似的情况.
我想要的是这样一个函数:
suspendCoroutineWithTimeout(timeout: Long, unit: TimeUnit, crossinline block: (Continuation<T>) -> Unit)
这与现有的suspendCoroutine
函数基本相同,但是如果在指定的超时时间内没有调用回调函数或块中提供的任何函数,则corutine会继续,但会出现TimeoutException或类似的情况.
您可以直接将withTimeout
和suspendCancellableCoroutine
组合在一起,以获得所需的效果:
suspend inline fun <T> suspendCoroutineWithTimeout(
timeout: Long, unit: TimeUnit,
crossinline block: (Continuation<T>) -> Unit
) = withTimeout(timeout, unit) {
suspendCancellableCoroutine(block = block)
}