indexedDB.databases()
- это обещание, вы должны дождаться его завершения, прежде чем продолжить.
Аналогично, db.deleteDatabase()
немедленно возвращает объект IDBOpenDBRequest
и выполняет операцию удаления асинхронно. Вам следует дождаться успешного обратного вызова запроса, чтобы убедиться, что удаление БД завершено, что-то вроде
async function deleteAllData() {
const dbs = await indexedDB.databases()
await Promise.all(
dbs.map(db => new Promise(
(resolve, reject) => {
const request = indexedDB.deleteDatabase(db.name)
request.onsuccess = resolve
request.onerror = reject
}
))
)
window.alert('Delete Sucessful');
}