如何在 Android 中 return 生命周期感知协程作用域中的函数值?
How do I return function value in lifecycle-aware coroutine scope in Android?
fun returnValue(): Int {
viewModelScope.launch {
return 1 // Something like this
}
}
我想 return viewModelScope 中的一些值,如上所示。我不希望我的功能被暂停。我该如何实现?
你可以试试这个
suspend fun returnValue(): Int {
suspendCoroutine<Int> { cont ->
viewModelScope.launch {
cont.resume(1)
}
}
}
如果returnValue()
不能暂停功能,基本上只有两个选择:
- 将 return 类型转换为
Deferred<Int>
并让调用者稍后负责处理 return 值。正文变为:
fun returnValue(): Deferred<Int> = viewModelScope.async {
return@async 1
}
- 阻塞线程直到值可用:
fun returnValue(): Int {
return runBlocking(viewModelScope.coroutineContext) {
return@runBlocking 1
}
}
fun returnValue(): Int {
viewModelScope.launch {
return 1 // Something like this
}
}
我想 return viewModelScope 中的一些值,如上所示。我不希望我的功能被暂停。我该如何实现?
你可以试试这个
suspend fun returnValue(): Int {
suspendCoroutine<Int> { cont ->
viewModelScope.launch {
cont.resume(1)
}
}
}
如果returnValue()
不能暂停功能,基本上只有两个选择:
- 将 return 类型转换为
Deferred<Int>
并让调用者稍后负责处理 return 值。正文变为:
fun returnValue(): Deferred<Int> = viewModelScope.async {
return@async 1
}
- 阻塞线程直到值可用:
fun returnValue(): Int {
return runBlocking(viewModelScope.coroutineContext) {
return@runBlocking 1
}
}