У меня есть функция которая делает запрос к IndexedDB и возвращает массив данных
function dbget(table, ind, key){
let openRequest = indexedDB.open('FV', 6);
openRequest.onsuccess = function() {
let db = openRequest.result;
let transaction = db.transaction(table, 'readonly');
let labs = transaction.objectStore(table);
let index = labs.index(ind);
let request = index.getAll(key);
request.onsuccess = function() {
return request.result;
}
};
}
далее в коде делаю вызов и дальше перебираю массив
let res = dbget('labs', 'lablvlID', lablvlID);
for(let x of res){
//do some
}
Так как запрос к IDB идет асинхронно - при вхождении в цикл у меня в переменной res ничего нет.
пробовал сделать функцию асинхронной, но всё равно не возвращается значение вовремя, так как там( как я понимаю) внутри аж 2 асинхронных функции
async function dbget(table, ind, key){
let openRequest = indexedDB.open('FV', 6);
openRequest.onsuccess = function() {
let db = openRequest.result;
let transaction = db.transaction(table, 'readonly');
let labs = transaction.objectStore(table);
let index = labs.index(ind);
let request = index.getAll(key);
request.onsuccess = function() {
let res = request.result;
return res;
}
};
}
dbget('labs', 'lablvlID', 'labkey').then(res => {
for(let x of res){
//do some
}
});
Как мне дождаться выполнения и только потом массив использовать в цикле for?