概述版本迁移需要独占连接。本文给出冲突检测与事件处理,避免升级阻塞。连接与事件处理function openDB(name, version, upgrade) {

return new Promise((resolve, reject) => {

const req = indexedDB.open(name, version);

req.onupgradeneeded = e => upgrade && upgrade(req.result, e.oldVersion, e.newVersion);

req.onsuccess = () => {

const db = req.result;

db.onversionchange = () => { db.close(); /* 提示用户刷新或自动重连 */ };

resolve(db);

};

req.onerror = () => reject(req.error);

});

}

async function ensureUpgraded() {

const db = await openDB('appdb', 2, (db, oldV, newV) => {

if (!db.objectStoreNames.contains('items')) db.createObjectStore('items', { keyPath: 'id' });

});

db.close();

}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部