HTML5中封装Promise风格的数据库初始化工具函数

openDB 是一个返回 Promise 的 IndexedDB 初始化工具函数,接收数据库名、版本号和升级回调,自动处理版本升级、错误捕获与连接复用。在 HTML5 中使用 IndexedDB 时,原生 API 是事件驱动、回调嵌套的,写起来繁琐且难以维护。封装一个 Promise 风格的数据库初始化工具函数,能显著提升可读性与复用性。核心目标:返回 Promise 的 openDB 工具函数该函数应接收数据库名、版本号和可选的升级逻辑,返回一个解析为 IDBDatabase 实例的 Promise。失败时 reject 错误,成功时 resolve 数据库对象,并确保只在必要时执行 upgrade 逻辑。自动处理版本变更(仅当请求版本 > 当前版本时触发 onupgradeneeded) 统一错误捕获(onerror 和 onblocked 可选处理) 避免重复打开(内部缓存已打开的连接,相同 name + version 复用)基础实现(兼容现代浏览器)以下是一个轻量、无依赖的封装示例:function openDB(name, version = 1, upgradeCb = null) { return new Promise((resolve, reject) => { const request = indexedDB.open(name, version); request.onerror = () => reject(request.error); request.onsuccess = () => resolve(request.result); request.onupgradeneeded = (event) => { const db = event.target.result; if (typeof upgradeCb === 'function') { upgradeCb(db, event.oldVersion, event.newVersion, event.transaction); } }; // 可选:处理数据库被其他标签页占用的情况 request.onblocked = () => reject(new Error('Database is blocked --- close other tabs using it')); });}调用方式简洁直观: 知网AI智能写作 知网AI智能写作,写文档、写报告如此简单

相关推荐
MetaLite36 分钟前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
颜颜yan_1 小时前
ESP-IDF 鸿蒙 PC 适配全记录:打通 Python、构建工具链与 ESP32-P4 固件生成
python·华为·harmonyos
言乐61 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
weixin_440730501 小时前
线程02-并发串行-互斥锁-Semaphore-Event
python·thread
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring
张小凡vip3 小时前
python--爬虫--经验积累的遇到的坑
开发语言·爬虫·python
毕业设计7033 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
xifangge20253 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
大草原的小灰灰4 小时前
Python基础语法
开发语言·python
万年咸鱼4 小时前
JVM 内存区域详解
jvm