gpt4 book ai didi

javascript - indexedDB 可重用函数

转载 作者:行者123 更新时间:2023-11-30 17:36:00 24 4
gpt4 key购买 nike

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

下面是我想带入生活的代码

function parent(){
var lovValues = getLovValuesByType("STORE_TYPE");
//lovType now is undefined
};

function getLovValuesByType(lovType){
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 {
return returnedLovValues; /// <------return data
};
};
};

最佳答案

您的return 语句正在从回调函数REQUEST.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 的内容。

关于javascript - indexedDB 可重用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com