Похоже, что открытие базы данных - это просто открытие. Это не фактический запрос к БД, и обработчик onsuccess предназначен для фактического запроса к базе данных, который приходит позже.
Хорошей практикой является установка обработчиков событий до того, как они могут быть вызваны, но в этом случае объект dbOpenRequest
не существует до окончания вызова open (он возвращается как результат вызова open), поэтому невозможно обработать onsuccess
до тех пор, пока он не откроется. Таким образом, обработчик onsuccess
должен вызываться через некоторое время как ответ на какое-то событие, отличное от open (возможно, запрос БД), или никогда не вызываться вообще.