数据库更新协程完成后,设置布尔标志



我想在将数据保存到数据库中的协程完成后将实时数据布尔标志设置为 true。我当前的代码如下:

在视图中模型:

private suspend fun updatePlace(eventId: Long, placeName: String, placeAddress: String) {
withContext(Dispatchers.IO) {
repository.updatePlace(placeName, placeAddress)
}
}
fun savePlace(placeName: String, placeAddress: String) {
val eventId = event.value!!.eId
uiScope.launch {
updatePlace(eventId, placeName, placeAddress)
}
//flag is currently set regardless of if the updatePlace function is completed
_currentPlaceUpdated.value = true
}

我一直在阅读有关异步和等待协程的信息,但还没有弄清楚如何在 updatePlace(( 函数完成后设置_currentPlaceUpdated的值。

只需将完成任务放在updatePlace调用之后即可。

uiScope.launch {
updatePlace(eventId, placeName, placeAddress)
_currentPlaceUpdated.value = true
}

withContext类似于scope.async(Dispatchers.IO) { /* Code */ }.await(),对返回值的交付进行了一些优化。

withContext暂停当前调用协程,直到其内部(代码块(完成。launch所做的是启动协程并让下一个代码执行,这就是立即调用它的原因。

最新更新