Jac*_*k M 5 javascript indexeddb
如果我现在进入我的浏览器控制台(我正在使用Chrome),请在此页面上输入
indexedDB.open("MyDB").onsuccess = function(e) { console.log("success"); };
Run Code Online (Sandbox Code Playgroud)
我立即在控制台中收到"成功"消息.我可以根据自己的喜好多次这样做,而且效果很好.但是如果我打字的话
indexedDB.deleteDatabase("MyDB").onsuccess = function(e) { console.log("success"); };
Run Code Online (Sandbox Code Playgroud)
我没有得到"成功"的消息.不仅如此,如果我再次尝试.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); };
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1173 次 |
最近记录: |