gpt4 book ai didi

javascript - indexedDB.deleteDatabase() 抛出错误

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

我正在尝试删除用于单元测试的数据库:

var DeleteDb = indexedDB.deleteDatabase(dbName);

这段代码直接在jasmine中的第一个beforeEach中调用。使用 chrome devTools 我可以看到 DeleteDb.error 具有以下值:

error: [Exception: DOMException: Failed to read the 'error' property from 'IDBRequest': The request has not finished.]

永远不会触发 DeleteDb.onsuccess 或 DeleteDb.onerror。此外,我从不尝试读取代码中的“错误”属性。

有人知道这个错误是什么意思,它来自哪里或者我该如何解决它?

更新:这段代码有时对我来说仍然会失败。它给了我与上面相同的错误。

<html>
<head>
<script>
var deleteDb = window.indexedDB.deleteDatabase('fakeNonExistentDatabase');
deleteDb.onsuccess = function() {
console.log('complete');
};
</script>
</head>
</html>

我仍然不确定为什么会这样。有时打开一个新标签或关闭另一个标签是有效的。删除 onsuccess 回调时也不会报错

更新 2好吧,看起来代码实际上在工作,但是永远不会触发 onsuccess 事件,因为在 chrome devtools 中按 F8 时不会再触发任何事件。我现在得到的错误是:

Uncaught InvalidStateError: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.

我认为上面的错误消息是这篇文章中第一条错误消息的结果,但实际上它是相反的。我可以在互联网上找到有关此主题的几页,但没有真正提供答案。

有什么想法吗?

最佳答案

同时检查 onblocked。可能有另一个数据库连接使您的删除请求既不成功也不失败。

可以通过在打开的连接上监听 onversionchange 来避免这种行为,并确保在触发该事件时关闭连接。

关于javascript - indexedDB.deleteDatabase() 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27201761/

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