javascript - 如何在异常捕获中获取数据库引用?

标签 javascript indexeddb

出现异常时需要关闭并删除当前indexeddb 代码行如下所示,

export async function getCurrUser(window) {
    ...

    let openRequest = indexedDB.open('userData',2);
    openRequest.onsuccess =  e => {
       let db = e.target.result;//this is not accessable in the catch block
        try{}
        catch(e){
            //close db and delete it. but I cannot get db reference here
            //I can't db.close() here
        }
    };
}

有什么有效的方法可以在异常捕获中获取db吗?

最佳答案

您可以简单地使用finally(始终执行)并用 bool 值控制它:

export async function getCurrUser(window) {
...

let openRequest = indexedDB.open('userData',2);
let error = false;
openRequest.onsuccess =  e => {
   let db = e.target.result;//this is not accessable in the catch block
    try{}
    catch(e){
         error = true;
        //print exception
    }finally{
      if (error){
      db.close();
      }
   }
};
}

了解更多信息:https://www.w3schools.com/js/js_errors.asp

关于javascript - 如何在异常捕获中获取数据库引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57306598/

相关文章:

javascript - 如何知道浏览器是否支持webSQL?

javascript - 如何从事件处理程序中返回 indexedDB 查询结果?

javascript - Jest - 当测试失败时记录传递到测试内部调用的函数的参数

javascript - 在 iOS 应用程序的 Parse Cloud Code 上运行 crypto-js 时出现问题

javascript - 如果 HTML2Canvas 遵循 f,则不会在 chrome 中呈现 'i'

Javascript 电子邮件验证正则表达式包含

javascript - 动态reduce函数会导致重新构建B-Tree吗

javascript - 检查 IndexedDB 2.0 支持

javascript - 如何使用 IndexedDB objectStore 中的值自动填充选择框?

javascript - Edge/Safari 是否对 Indexeddb 大小有限制?