Javascript indexedDB可重用函数

Javascript indexedDB可重用函数,javascript,indexeddb,Javascript,Indexeddb,我正在制作一些使用indexdDB的原型应用程序,但我不知道如何创建可重用的函数。 例如,我想创建可重用函数来检索LOV值。我知道它应该通过事件以某种方式创建,但我不知道如何创建。 有人能帮忙吗 下面是我希望在生活中带来的代码 函数父函数(){ var lovValues=getLovValuesByType(“存储类型”); //lovType现在未定义 }; 函数getLovValuesByType(lovType){ var returnedLovValues=新数组(); var t=d

我正在制作一些使用indexdDB的原型应用程序,但我不知道如何创建可重用的函数。 例如,我想创建可重用函数来检索LOV值。我知道它应该通过事件以某种方式创建,但我不知道如何创建。 有人能帮忙吗

下面是我希望在生活中带来的代码

函数父函数(){
var lovValues=getLovValuesByType(“存储类型”);
//lovType现在未定义
};
函数getLovValuesByType(lovType){
var returnedLovValues=新数组();
var t=db.transaction([“LST\u OF VAL”],“readonly”);
var objectStore=t.objectStore(“LST_OF VAL”);
var INDEX=objectStore.INDEX(“类型”);
var请求=INDEX.openCursor(仅IDBKeyRange.only(lovType));
REQUEST.onsuccess=函数(){
var CURSOR=REQUEST.result;
如果(光标){
var value=this.result.value.VAL;
返回的值。推送(值);
this.result.continue();
}否则{

return returnedLovValues;//您的
return
语句正在从回调函数
请求返回。onsuccess
。您不会从
getLovValuesByType
返回任何内容,这就是
lovValues
未定义的原因

最简单的解决方案是使用回调函数:

getLovValuesByType("STORE_TYPE", function (lovValues) {
    //lovType now is defined
);

function getLovValuesByType(lovTypem, cb){
    var returnedLovValues = new Array();
    var t = db.transaction(["LST_OF_VAL"], "readonly");
    var objectStore = t.objectStore("LST_OF_VAL");
    var INDEX = objectStore.index("TYPE");
    var REQUEST = INDEX.openCursor(IDBKeyRange.only(lovType));
    REQUEST.onsuccess = function() {
        var CURSOR = REQUEST.result;
        if (CURSOR) {
            var value = this.result.value.VAL;
            returnedLovValues.push(value);
            this.result.continue();
        } else {
            cb(returnedLovValues);
        };
    };
};

一般来说,您可能需要阅读一些关于异步JavaScript的内容。

是的,回调正是我要写的答案。与其返回,不如传入一个被调用的函数。上面的关键行是cb(返回..)。