gpt4 book ai didi

javascript - 为什么调用 indexedDB.deleteDatabase 会阻止我进行任何进一步的交易?

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:08 24 4
gpt4 key购买 nike

如果我现在进入浏览器的控制台(我使用的是 Chrome),在这个页面上输入

indexedDB.open("MyDB").onsuccess = function(e) { console.log("success"); };

我的控制台立即收到“成功”消息。我可以多次执行此操作,而且效果很好。但是如果我输入

indexedDB.deleteDatabase("MyDB").onsuccess = function(e) { console.log("success"); };

我没有收到“成功”消息。不仅如此,如果我再次尝试调用 .open,我也不会收到任何“成功”消息。我该如何治愈这种由 .deleteDatabase 引起的怪病,到底发生了什么?

(PS:就在我输入完这个答案时,我认为调用 .deleteDatabase 的“成功”消息终于传来了,大约在我调用电话后两分钟 - 但是问题站)。

最佳答案

每次调用 indexedDB.open 都会建立一个新的数据库连接。当您调用 deleteDatabase 时,所有这些打开的连接都将获得 versionchange 事件。他们每个人都可以监听该事件并关闭他们的连接作为响应。那是你的第一个选择。如果他们不这样做,indexedDB.deleteDatabase("whatever") 返回的请求将收到一个被阻止的事件。这就是您的情况。您的第二个选择是监听被阻止的事件并关闭那里的连接:

var request = indexedDB.deleteDatabase("MyDB");
request.onsuccess = function(e) { console.log("success"); };
request.onblocked = function(e) {
console.log("blocked: " + e);
// Close connections here
};
request.onerror = function(e) { console.log("error: " + e); };

关于javascript - 为什么调用 indexedDB.deleteDatabase 会阻止我进行任何进一步的交易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137234/

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