Hirdetés
- Milyen billentyűzetet vegyek?
- OLED monitor topic
- HiFi műszaki szemmel - sztereó hangrendszerek
- Saját fejlesztésű notebookkal jelentkezett a VGA-iról ismert Moore Threads
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Ügyesen előzi meg a 12V-2x6 tápkonnektor leégését a Dell
- Vezetékes FEJhallgatók
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Idővel kicsúszik az aljzatból a 12V-2x6 tápkonnektor?
- AMD Navi Radeon™ RX 9xxx sorozat
-
PROHARDVER!
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
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
- AKCIÓ! MSI Thin A15 B7VE FHD Gamer notebook - R5 7535HS 16GB DDR5 512GB SSD RTX 4050 6GB W11
- ÁRGARANCIA!Épített KomPhone i5 14600KF 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Akciós Windows 10 pro + Office 2019 professional plus csomag AZONNALI SZÁLLÍTÁS
- BESZÁMÍTÁS! 2TB Samsung 990 PRO NVMe SSD meghajtó garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

