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