class MyViewModel(private val db: AppDatabase): ViewModel() { suspend fun insertAndRead(pages: List<Page>) { db.withTransaction { db.pageDao().insertAll(pages) } val pagesInserted = db.pageDao().selectAll() } } Tengo curiosidad acerca de que Room maneja el bloque withTransaction .
Digamos con el ejemplo de código anterior. ¿Room espera a que el bloque withTransaction termine de ejecutarse y luego pasa a la siguiente línea?
¿O simplemente ejecuta el bloque withTransaction dentro de una rutina y luego inicia la siguiente línea inmediatamente sin esperar a que se complete el bloque withTransaction ?
withTransaction() es una función de suspensión. Las funciones de suspensión generalmente esperan por suspensión, son síncronas con sus llamadores, no programan operaciones asíncronas.
Entonces la respuesta es: sí, espera a que el bloque interno termine de ejecutarse.