为什么调用indexedDB.deleteDatabase阻止我进行任何进一步的事务?

杰克·M

如果我现在进入浏览器的控制台(正在使用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时,所有这些打开的连接都将获得版本更改事件。他们每个人都可以侦听该事件并作为响应关闭其连接。那是您的第一选择。如果没有,则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); };

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何进一步理解为什么Go会以这种方式处理错误?

为什么 VecDeque is_empty 会阻止进一步借用?

为什么包含需要进一步的依赖?

在 documentDb 最终一致性模型中,“没有任何进一步的写入”是什么意思?

我在什么条件下可以进一步增加5%的折扣?

调用进一步的异步方法

什么是迭代器的“进一步过滤”?

进一步的点击会发生什么

Angular HttpClient:进行进一步的api调用,以等待第一个完成

基于IndexedDB规范,为什么打开数据库连接在indexedDB.deleteDatabase调用上被关闭?

从Vue组件引发异常并阻止任何进一步处理

如何在循环中反复调用R并检索结果以在SAS中进行进一步处理

如何从 API 调用中获取简单数据以在 Golang 中进行进一步评估

有什么方法可以进一步优化Java反射方法调用?

什么是处理多个异步操作和处理各进行进一步的处理最好的方法?

有什么方法可以进一步优化此JavaScript(将当前时间与开放时间进行比较)?

为什么并行处理不能进一步加快速度?

为什么按住鼠标按钮输入元素会干扰进一步的鼠标事件?

为什么在继续之后;执行进一步的功能代码被执行?

为什么git不能进一步减小存储库的大小?

如何进一步对网站进行抓取?

从asp.net c#应用程序调用“ Sav32Cli.exe”“代码2-如果发现阻止进一步执行的错误”

如何阻止我的 AsyncTask 进一步下载?

来自API调用的数据存储在数组中,但是当我尝试在函数中进一步使用该数组时,它表明该数组为空。为什么?

LuaJIT setfenv似乎未对给定环境设置进一步的函数调用

从isValid()方法中调用进一步的验证器?

直接在调用onClick中返回/完成功能,无需进一步的代码

直接调用 `Rcpp::List` 中的元素以供进一步使用

Angular Http Get 404停止进一步调用