javascript - 我是否需要刷新页面来查看索引数据库是否已重置?

标签 javascript html google-chrome indexeddb

我开始使用 HTML 5 的索引数据库,但我得到了一些奇怪的结果。第一个是我尝试清除我的数据库,但我只在刷新网站时看到它被重置。事情应该是这样吗? 我见过其他示例代码,但它不会以这种方式发生。

onsuccess 被调用,但更新方法显示的数据库与之前的相同...

这是我的重置功能:

function resetDB() 
{
    try
    {       
        if (localDatabase != null && localDatabase.db != null) 
        {
            var store = localDatabase.db.transaction("patients", "readwrite").objectStore("patients");                    

            store.clear().onsuccess = function(event) 
            {
                alert("Patients DB cleared");
                update_patients_stored();
            };
        }
    }
    catch(e)
    {
        alert(e);
    }
}

最佳答案

onsuccess 可以在数据库中实际更新结果之前触发(请参阅 this answer to a question I asked here 。因此,如果 update_ Patients_stored 正在从数据库中读取,它可能仍然会看到旧的数据。如果您使用事务的 oncomplete,那么您就不会遇到这个问题。

如果这确实导致了您的问题,那么这将解决它:

            var tx = localDatabase.db.transaction("patients", "readwrite");                    

            tx.objectStore("patients").clear();

            tx.oncomplete = function(event) 
            {
                alert("Patients DB cleared");
                update_patients_stored();
            };

关于javascript - 我是否需要刷新页面来查看索引数据库是否已重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078335/

相关文章:

google-chrome - TestCafe 中的浏览器功能

javascript - 为什么数组不能与 JavaScript 中的 === 进行比较?

javascript - 如何将多个属性键作为参数传递给使用括号表示法的函数?

javascript - 如何将变量保存到文件中,以便在下次站点运行时加载这些变量?

javascript - 如何更改html中复选框的对齐方式

html - 过滤器 :Alpha(opacity=50) doesn't pass CSS validation

css - Chrome 用户代理 border-radius 覆盖了我的选择样式

javascript - 如何在 Atom 中正确设置 Airbnb 的 javascript linter?

javascript - 代码在 jsfiddle 中有效,但在浏览器中无效

javascript - 更改 typescript 断点后无法正确设置,并且 main-client.js 不断将自身加载到 Visual Studio 2017 中