Как предотвратить множественные начальные транзакции в Realmjs?
Я создаю функцию для обработки транзакции, а затем вызываю ее в нескольких местах. Я получаю сбой, когда другая транзакция еще не завершена, когда я открываю новую транзакцию.
Вот мой код:
const RealmMakeTransaction = async (action) => {
try {
realm.GetInstance().beginTransaction();
let response = await action();
realm.GetInstance().commitTransaction();
return response;
} catch (e) {
realm.GetInstance().cancelTransaction();
}
};
1 ответ
Вы можете легко проверить, если realm
уже в транзакции или нет перед звонком beginTransaction()
позвонив по телефону realm.GetInstance().isInTransaction
Ваш код будет выглядеть так:
const RealmMakeTransaction = async (action) => {
//use single instance
let realm = realm.GetInstance();
try {
if( realm.isInTransaction)
realm.cancelTransaction();
realm.beginTransaction();
let response = await action();
realm.commitTransaction();
return response;
} catch (e) {
realm.cancelTransaction();
realm.close();
}
};