Új hozzászólás Aktív témák

  • Doink
    aktív tag

    Sziasztok! IndexedDb a téma, hogyan adhatom vissza a getData() metódussal a táblában található elemeket?

    Az async működést nem igazán vágom :(

    this.getData = function(){
    var open = indexedDB.open(database, 1);
    var data;
    open.onsuccess = function() {
    // Start a new transaction
    var db = open.result;
    var tx = db.transaction(table, "readwrite");
    var store = tx.objectStore(table);

    // Query the data
    var getAllData = store.getAll();

    getAllData.onsuccess = function() {
    data = getAllData.result;
    };

    // Close the db when the transaction is done
    tx.oncomplete = function() {
    db.close();
    };
    };
    return data;
    };

    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).

Új hozzászólás Aktív témák