kotlin-extensions / io.realm.kotlin/io.realm.Realm/executeTransactionAwait _

executeTransactionAwait

suspend fun Realm.executeTransactionAwait(context: CoroutineContext = Realm.WRITE_EXECUTOR.asCoroutineDispatcher(), transaction: (realm: Realm) -> Unit): Unit

暂停版本的Realm.executeTransaction以在协程中使用。

取消执行此函数的范围或作业不会取消事务本身。 如果要确保事务具有协作性,则必须在运行事务时检查CoroutineScope.isActive的值:

coroutineScope.launch {
  // insert 100 objects
  realm.executeTransactionAwait { transactionRealm ->
    for (i in 1..100) {
      // all good if active, otherwise do nothing
      if (isActive) {
        transactionRealm.insert(MyObject(i))
      }
    }
  }
}

参数

context - 可选CoroutineContext ,此协程将在其中运行。

transaction - 要执行的Realm.Transaction

异常

IllegalArgumentException - 如果transactionnull

RealmMigrationNeededException - 如果最新版本包含不兼容的模式更改。