Ваш код не ожидает выполнения асинхронной операции, потому что вы не правильно используете промисы или не дожидаетесь их выполнения.
Для того, чтобы исправить код и правильно обрабатывать асинхронные операции в IndexedDB, можно использовать async/await или цепочку then/catch для обработки промисов.
Пример исправленного кода с использованием async/await:
```javascript
async function addDataToIndexedDB(data) {
const db = await indexedDB.open('myDatabase', 1);
db.onupgradeneeded = function() {
const store = db.result.createObjectStore('myStore', { keyPath: 'id' });
};
const transaction = db.transaction(['myStore'], 'readwrite');
const objectStore = transaction.objectStore('myStore');
for (let i = 0; i < data.length; i++) {
await new Promise((resolve, reject) => {
const request = objectStore.add(data[i]);
request.onsuccess = function() {
resolve();
};
request.onerror = function() {
reject(request.error);
};
});
}
console.log('All data added successfully');
}
```
В этом примере мы создали асинхронную функцию `addDataToIndexedDB`, которая ожидает выполнения промисов при добавлении данных в IndexedDB. Теперь код будет добавлять все данные поочередно и дожидаться завершения каждой операции перед переходом к следующей.