usb*_*102 4 kotlin kotlin-coroutines
我想要的是这样的功能:
suspendCoroutineWithTimeout(timeout: Long, unit: TimeUnit, crossinline block: (Continuation<T>) -> Unit)
Run Code Online (Sandbox Code Playgroud)
这与现有suspendCoroutine函数基本相同,但是如果回调或块中提供的任何内容不会在指定的超时内被调用,则corutine会继续,但会出现TimeoutException或类似的情况.
Rom*_*rov 14
您可以以简单的方式组合withTimeout并suspendCancellableCoroutine获得所需的效果:
suspend inline fun <T> suspendCoroutineWithTimeout(
timeout: Long, unit: TimeUnit,
crossinline block: (Continuation<T>) -> Unit
) = withTimeout(timeout, unit) {
suspendCancellableCoroutine(block = block)
}
Run Code Online (Sandbox Code Playgroud)
来自@Roman Elizarov 的完美回答.. 只是在上面加上我的 2 美分,因为我需要从那个电话中得到回报..所以添加 T?返回它会是...
suspend inline fun <T> suspendCoroutineWithTimeout(timeout: Long, crossinline block: (Continuation<T>) -> Unit ) : T? {
var finalValue : T? = null
withTimeoutOrNull(timeout) {
finalValue = suspendCancellableCoroutine(block = block)
}
return finalValue
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |