我试图将从数据库中读取的数据放入一个变量中。我尝试了很多东西,包括回调函数,但是当进程超出“opencursor().onsuccess”函数范围时,看起来没有任何效果。
“警报 1”正确显示结果,但“警报 2”和“警报 3”不正确。
我正在从 HTML 代码中调用“main()”函数。
我真的很沮丧,因为我一直在挖掘互联网寻找解决方案,但没有任何积极的结果。
有人可以帮我吗?
非常感谢。
var data=[];
function kkeyget(t1, db_name, db_version)
{
var request = indexedDB.open(db_name, db_version);
request.onerror=function()
{
alert("Error");
}
request.onsuccess=function(event)
{
var db=this.result;
var trans = db.transaction(t1, "readonly");
var objectStore = trans.objectStore(t1);
objectStore.openCursor().onsuccess = function(event)
{
var cursor = event.target.result;
if (cursor)
{
data.push(cursor.value);
//Alert 1:
alert(data[0].id);
cursor.continue();
}
else alert("No more entries!");
};
}
//Alert 2:
alert(data[0].id);
}
function main()
{
kkeyget("agenda", "example_db", 1);
//Alert 3:
alert(data[0].id);
}