Эта ошибка означает, что ваша транзакция уже завершена до вашего store.put
вызова.В IndexedDB транзакции фиксируются автоматически :
Транзакции очень тесно связаны с циклом событий.Если вы совершите транзакцию и вернетесь в цикл обработки событий, не используя ее, транзакция станет неактивной.Единственный способ сохранить активную транзакцию - сделать запрос на нее.Когда запрос будет завершен, вы получите событие DOM и, предположив, что запрос выполнен, у вас будет еще одна возможность продлить транзакцию во время этого обратного вызова.Если вы вернетесь в цикл обработки событий без расширения транзакции, она станет неактивной и т. Д.Пока есть ожидающие запросы, транзакция остается активной.Время жизни транзакции действительно очень простое, но привыкание может занять некоторое время.Еще несколько примеров тоже помогут.Если вы начинаете видеть TRANSACTION_INACTIVE_ERR
коды ошибок, значит вы что-то напутали.
По сути это означает, что вы не можете выполнять другие несвязанные асинхронные операции, а затем делать запрос на транзакцию.
Глядя на ваш код, это не должно быть проблемой, потому что displayData
синхронно вызывает myCallbackFunction
.Я предполагаю, что код, который вы разместили, является лишь упрощенным примером, а не реальным кодом, который выдает ошибку.В вашем реальном коде displayData
, вероятно, выполняет асинхронный обратный вызов.