Вы можете легко проверить, если 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();
}
};