fix: 解决indexedDB的setItem、,removeItem以及clear在请求成功时而不是事务完成时触发resolve问题

master^2
layhuts 2026-05-09 11:54:11 +08:00
parent 2d36d6b510
commit df5cb426d1
1 changed files with 18 additions and 9 deletions

View File

@ -34,10 +34,13 @@ class IndexedDBDriver implements IStorageDriver {
return new Promise((resolve, reject) => {
const tx = db.transaction(this.storeName, 'readwrite');
const store = tx.objectStore(this.storeName);
const request = store.clear();
store.clear();
request.addEventListener('success', () => resolve());
request.addEventListener('error', () => reject(request.error));
tx.addEventListener('complete', () => resolve());
tx.addEventListener('error', () => reject(tx.error));
tx.addEventListener('abort', () =>
reject(tx.error ?? new Error('Transaction aborted')),
);
});
}
@ -74,10 +77,13 @@ class IndexedDBDriver implements IStorageDriver {
return new Promise((resolve, reject) => {
const tx = db.transaction(this.storeName, 'readwrite');
const store = tx.objectStore(this.storeName);
const request = store.delete(key);
store.delete(key);
request.addEventListener('success', () => resolve());
request.addEventListener('error', () => reject(request.error));
tx.addEventListener('complete', () => resolve());
tx.addEventListener('error', () => reject(tx.error));
tx.addEventListener('abort', () =>
reject(tx.error ?? new Error('Transaction aborted')),
);
});
}
@ -86,10 +92,13 @@ class IndexedDBDriver implements IStorageDriver {
return new Promise((resolve, reject) => {
const tx = db.transaction(this.storeName, 'readwrite');
const store = tx.objectStore(this.storeName);
const request = store.put(value, key);
store.put(value, key);
request.addEventListener('success', () => resolve());
request.addEventListener('error', () => reject(request.error));
tx.addEventListener('complete', () => resolve());
tx.addEventListener('error', () => reject(tx.error));
tx.addEventListener('abort', () =>
reject(tx.error ?? new Error('Transaction aborted')),
);
});
}