Skip to content

Commit 2659582

Browse files
authored
Convert IDB usage in Fetch.js to async. NFC (#24924)
1 parent 59c47d2 commit 2659582

File tree

1 file changed

+27
-28
lines changed

1 file changed

+27
-28
lines changed

src/Fetch.js

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,56 +18,55 @@ var Fetch = {
1818
// dbInstance: undefined,
1919

2020
#if FETCH_SUPPORT_INDEXEDDB
21-
// Be cautious that `onerror` may be run synchronously
22-
openDatabase(dbname, dbversion, onsuccess, onerror) {
23-
try {
21+
async openDatabase(dbname, dbversion) {
22+
return new Promise((resolve, reject) => {
23+
try {
2424
#if FETCH_DEBUG
25-
dbg(`fetch: indexedDB.open(dbname="${dbname}", dbversion="${dbversion}");`);
25+
dbg(`fetch: indexedDB.open(dbname="${dbname}", dbversion="${dbversion}");`);
2626
#endif
27-
var openRequest = indexedDB.open(dbname, dbversion);
28-
} catch (e) {
29-
return onerror(e);
30-
}
27+
var openRequest = indexedDB.open(dbname, dbversion);
28+
} catch (e) {
29+
return reject(e);
30+
}
3131

32-
openRequest.onupgradeneeded = (event) => {
32+
openRequest.onupgradeneeded = (event) => {
3333
#if FETCH_DEBUG
34-
dbg('fetch: IndexedDB upgrade needed. Clearing database.');
34+
dbg('fetch: IndexedDB upgrade needed. Clearing database.');
3535
#endif
36-
var db = /** @type {IDBDatabase} */ (event.target.result);
37-
if (db.objectStoreNames.contains('FILES')) {
38-
db.deleteObjectStore('FILES');
39-
}
40-
db.createObjectStore('FILES');
41-
};
42-
openRequest.onsuccess = (event) => onsuccess(event.target.result);
43-
openRequest.onerror = onerror;
36+
var db = /** @type {IDBDatabase} */ (event.target.result);
37+
if (db.objectStoreNames.contains('FILES')) {
38+
db.deleteObjectStore('FILES');
39+
}
40+
db.createObjectStore('FILES');
41+
};
42+
openRequest.onsuccess = (event) => resolve(event.target.result);
43+
openRequest.onerror = reject;
44+
});
4445
},
4546
#endif
4647

47-
init() {
48+
async init() {
4849
Fetch.xhrs = new HandleAllocator();
4950
#if FETCH_SUPPORT_INDEXEDDB
5051
#if PTHREADS
5152
if (ENVIRONMENT_IS_PTHREAD) return;
5253
#endif
53-
var onsuccess = (db) => {
54+
55+
addRunDependency('library_fetch_init');
56+
try {
57+
var db = await Fetch.openDatabase('emscripten_filesystem', 1);
5458
#if FETCH_DEBUG
5559
dbg('fetch: IndexedDB successfully opened.');
5660
#endif
5761
Fetch.dbInstance = db;
58-
removeRunDependency('library_fetch_init');
59-
};
60-
61-
var onerror = () => {
62+
} catch (e) {
6263
#if FETCH_DEBUG
6364
dbg('fetch: IndexedDB open failed.');
6465
#endif
6566
Fetch.dbInstance = false;
67+
} finally {
6668
removeRunDependency('library_fetch_init');
67-
};
68-
69-
addRunDependency('library_fetch_init');
70-
Fetch.openDatabase('emscripten_filesystem', 1, onsuccess, onerror);
69+
}
7170
#endif // ~FETCH_SUPPORT_INDEXEDDB
7271
}
7372
}

0 commit comments

Comments
 (0)