@@ -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