Краткий ответ: не храните.
Чтобы предотвратить состояние гонки, IndexedDB предназначен для неявного фиксации, и, следовательно, вы НЕ должны явно сохранять транзакцию. Если это необходимо, измените свой алгоритм так, чтобы он не требовал его сохранения.
Повторное использование транзакции для выполнения и выполнения заказанных запросов. В этих случаях транзакция будет неявно оставаться в живых.
Вы можете сделать это, объединив значения с |
и проверив через и
.
Чтобы проверить, содержит ли значение или из тегов:
if ((myValue & (Tag.PrimaryNav | Tag.HomePage)) != 0) { ... }
|
объединяет перечисления, которые вы тестируете (побитовое), и &
тесты с помощью побитового маскирования - если результат не равен нулю, у него установлен хотя бы один из них.
Если вы хотите проверить, установлены ли оба из них, вы также можете это сделать:
Tag desiredValue = Tag.PrimaryNav | Tag.HomePage;
if ((myValue & desiredValue) == desiredValue) { ... }
Здесь мы маскируем все, что нам не важно, и проверяем, что результирующее значение равно тому, что нас делает заботит (мы не можем использовать ! = 0
, как раньше, потому что это будет соответствовать либо значению, и здесь нас интересует оба ).
Некоторые ссылки:
var someEnumValue = Tag.PrimaryNav | Tag.HomePage;
Чтобы проверить, содержит ли перечисление заданное значение:
if ((someEnumValue & Tag.PrimaryNav) == Tag.PrimaryNav)
{
}
Вы можете использовать метод HasFlag, чтобы избежать необходимости использования булевой логики,
Tag Val = (Tag)9;
if (Val.HasFlag(Tag.PrimaryNav))
{
Console.WriteLine("Primary Nav");
}
if(Val.HasFlag(Tag.HomePage))
{
Console.WriteLine("Home Page");
}
Для поразрядных ( Flags
) перечислений тест «любой из» равен! = 0, итак:
const Tag flagsToLookFor = Tag.PrimaryNav | Tag.HomePage;
if ((node.Tag & flagsToLookFor) != 0) {
// has some cross-over with PrimaryNav or HomePage (and possibly others too)
}
Вы можете использовать библиотеку Джона Скита Unconstrained Melody :
var someEnumValue = Tag.PrimaryNav | Tag.HideChildPages;
someEnumValue.HasAny(Tag.PrimaryNav | Tag.HomePage); // Returns true
var tag = Tag.HideChildPages | Tag.PrimaryNav;
If ((tag & Tag.PrimaryNav) == Tag.PrimaryNav) {
// Tag.PrimaryNav set.
}