gpt4 book ai didi

javascript - 我怎么知道 indexedDB 请求循环是否已经结束?

转载 作者:行者123 更新时间:2023-11-30 10:29:23 25 4
gpt4 key购买 nike

我正在使用 indexedDB 来存储一些离线数据。在我的代码中有一个循环将值插入存储对象:

function Insert(){
for(var i in list)
InsertList(list[i]);
alert("successful");
}

function InsertList(str){
var trans = LocalDB.indexedDB.db.transaction(StoreList, IDBTransaction.READ_WRITE);
var store = trans.objectStore(StoreList);
var data = {
"item": str};
var request = store.put(data);
request.onsuccess = function (e) { };
request.onerror = function (e) { alert("Error inserting"); };
}

警告消息会在循环执行之前显示,如果在我关闭警告消息后立即刷新或关闭页面,则某些值不会插入到列表中,因为循环被打断了。那么如何才能知道循环已经结束,然后给出成功的信息呢?谢谢。

最佳答案

indexeddb API 是异步的。这意味着您只能在成功使用回调方法结束的情况下获得反馈。

在你的情况下,我会以不同的方式工作,并将所有内容插入一个事务中。交易完成后,您会收到回调。如果调用它,您可以确定所有内容都已保存并且插入已完成。

function Insert(){
var trans = LocalDB.indexedDB.db.transaction(StoreList, IDBTransaction.READ_WRITE);
var store = trans.objectStore(StoreList);
for(var i in list)
{
var data = { "item": list[i]};
var request = store.put(data);
request.onsuccess = function (e) { };
request.onerror = function (e) { alert("Error inserting"); };
}

trans.oncomplete = function ()
{
alert("successful");
}
}

关于javascript - 我怎么知道 indexedDB 请求循环是否已经结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847665/

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