fix: 解决indexedDB的setItem、,removeItem以及clear在请求成功时而不是事务完成时触发resolve问题
parent
2d36d6b510
commit
df5cb426d1
|
|
@ -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')),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue