- Samsung Galaxy Buds3 Pro - szárat eresztettek a babok
- Xiaomi 17 Ultra - jó az optikája
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- Motorola Edge 50 Ultra - szépen kifaragták
- Google Pixel 10a – évismétlés
- Garmin Venu 4 - a nagy ugrás
- iPhone topik
- Huawei P30 Pro - teletalálat
-
Mobilarena
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Doink
aktív tag
A egyik megoldás az hogy ígéretet (Promise) adj vissza és belül az onsuccess-nél resolve-old, onerror-nál meg reject-eled.
this.getData = function(){
return new Promise(resolve,reject) => {
let query = db.valami_async_művelet()
query.onsuccess = function(result){
resolve(result)
}
query.onerror = function(err){
reject(err)
}
}
}Így fogod tudni meghívni:
ValamiService.getData().then((result) => {
// beteljesült az ígéret és a result-ban lesz az eredmény
}).catch(error) => {
// hiba
});Másik elegáns megoldás ha cold observable-t használsz (rxjs).
-
Karma
félisten
Az aszinkron működést nem tudod megkerülni, úgyhogy olyan getData függvényt, amit egyszerűen szinkron módon meghívsz és eredményeket ad vissza, lehetetlen írni. (Nem is feltétlen baj.)
Van egy pár lehetőséged, az egyik legegyszerűbb, ha adsz egy callback paramétert a getData függvényednek. Ez például egy olyan kétparaméteres függvény, aminek az első paramétere a futáskor történt hiba (lehet `null` is ha minden szép), a második pedig a tényleges adat.
A lényeg, hogy az indexedDB-s kódod az utolsó onsuccess handler végén meghívja ezt a függvényt, így tudod feldolgozni az eredményt.
Például:
this.getData = function(callback){
var open = indexedDB.open(database, 1);
open.onsuccess = function() {
// Start a new transaction
var db = open.result;
var tx = db.transaction(table, "readonly");
var request = tx.objectStore(table).getAll();
request.onsuccess = function() {
callback(null, request.result);
};
request.onerror = function() {
callback(request.errorCode);
};
// Close the db when the transaction is done
tx.oncomplete = function() {
db.close();
};
};
open.onerror = function() {
callback(open.errorCode);
}
};Máshol meg így hívod:
valami.getData(function(err, data) {
if (err) {
console.log("Error while reading data", err);
return;
}
console.log("Found data", data);
});Ha meg tisztább kódot akarsz, keress egy promise wrappert az IndexedDB-hez szerintem. Persze azt is meg kell tanulni használni először.
Amúgy sose használtam az IndexedDB-t, de a megérzésem azt mondja, hogy nem kéne minden lekérdezésnél nyitni-zárni.
Új hozzászólás Aktív témák
- Kertészet, mezőgazdaság topik
- Samsung Galaxy Buds3 Pro - szárat eresztettek a babok
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Milyen monitort vegyek?
- Milyen légkondit a lakásba?
- Eladási mérföldkő: 5 millió példánynál a Silent Hill 2 Remake
- Xiaomi 17 Ultra - jó az optikája
- E-roller topik
- További aktív témák...
- Apple iPhone 11 64GB,Újszerű,Dobozaval,12 hónap garanciával
- Azonnali készpénzes nVidia RTX 4000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- Apple iPhone 13 /128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 100% Után gyártott Kijelző
- Új HP 15 Victus FHD IPS 144Hz i5-12500H 12mag 16GB 512GB SSD Nvidia RTX 4050 6GB Win11 Garancia
- BESZÁMÍTÁS! ASUS H110M i3 6100T 8GB DDR4 250GB SSD GTX 1050 Ti 4GB Kolink Inspire K2 aRGB 400W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


