From 9f1dcc667df9857e3d0469fe7112a9f985aad490 Mon Sep 17 00:00:00 2001 From: doprz <52579214+doprz@users.noreply.github.com> Date: Tue, 18 Apr 2023 10:30:13 -0500 Subject: [PATCH 1/2] feat: parallelize initializeDB.ts promises --- src/views/lib/database/initializeDB.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/views/lib/database/initializeDB.ts b/src/views/lib/database/initializeDB.ts index d1475c68..4420e046 100644 --- a/src/views/lib/database/initializeDB.ts +++ b/src/views/lib/database/initializeDB.ts @@ -24,12 +24,14 @@ export async function initializeDB(): Promise { if (db) { return db; } - const { Database } = await initSqlJs({ - locateFile: file => WASM_FILE_URL, - }); - const dbBuffer = await fetch(DB_FILE_URL).then(res => res.arrayBuffer()); - db = new Database(new Uint8Array(dbBuffer)); + const databasePromise = await initSqlJs({ + locateFile: () => WASM_FILE_URL, + }); + const dbBufferPromise = await fetch(DB_FILE_URL).then(res => res.arrayBuffer()); + const [database, dbBuffer] = await Promise.all([databasePromise, dbBufferPromise]); + + db = new database.Database(new Uint8Array(dbBuffer)); return db; } From 5e98f45210346f0e7bb69af5cf25e336c76416ca Mon Sep 17 00:00:00 2001 From: doprz <52579214+doprz@users.noreply.github.com> Date: Sat, 23 Dec 2023 09:26:49 -0600 Subject: [PATCH 2/2] feat: Refactor database initialization code --- src/views/lib/database/initializeDB.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/views/lib/database/initializeDB.ts b/src/views/lib/database/initializeDB.ts index 4420e046..c6e094cd 100644 --- a/src/views/lib/database/initializeDB.ts +++ b/src/views/lib/database/initializeDB.ts @@ -25,13 +25,14 @@ export async function initializeDB(): Promise { return db; } - const databasePromise = await initSqlJs({ - locateFile: () => WASM_FILE_URL, - }); - const dbBufferPromise = await fetch(DB_FILE_URL).then(res => res.arrayBuffer()); - const [database, dbBuffer] = await Promise.all([databasePromise, dbBufferPromise]); + const [{ Database }, dbBuffer] = await Promise.all([ + initSqlJs({ + locateFile: () => WASM_FILE_URL, + }), + fetch(DB_FILE_URL).then(res => res.arrayBuffer()), + ]); - db = new database.Database(new Uint8Array(dbBuffer)); + db = new Database(new Uint8Array(dbBuffer)); return db; }