Вопрос простой, но решить не получается(( Суть такая. Надо добавить данные в БД IndexDB. Используется промис, чтобы ловить события. После первой итерации description_list поток идет на завершение работы. Через devtool отловить проблему не могу, тк console.log() не ловит промис. После await код перестает работать идет на завершение. В целом также писал код для fetch и там работа не завершалась. Т.е. также в async фу-ии вызывается await с фу-ей, в которой возвращается Promise.
globalThis.db = DB // Тут открытая БД IDBDatabase
let description_list = [...] // тут даннные
function run() {
writeAllDescriptions(description_list);
}
async function writeAllDescriptions(description_list) {
for (let description of description_list) {
// в description 5 словарей. Все сохраняются.
for (let desc of description) {
let descJSON = JSON.stringify(desc);
// Все данные из первой итерации description_list
// сохраняются в БД.
let t = await writeDesc(descJSON);
// Не срабатывает лог, хотя
//все данные из description сохраняются
console.log(t)
}
}
}
function writeDesc(desc) {
return new Promise(function(resolve) {
let transaction = globalThis.db.transaction("english", "readwrite");
let descriptionStore = transaction.objectStore("english");
let description = descriptionStore.index("desc");
// поиск по индексу
description.get(desc).onsuccess = function(event) {
let r = event.target.result;
// если такого значения нет, добавить
if (!r) {
descriptionStore.add({"desc":desc}).onsuccess = function() {
resolve(this);
}
}
}
})
}
run();