From 8e824902a4a5baf3b05bc03b01321766c0787433 Mon Sep 17 00:00:00 2001 From: Issack John Date: Thu, 7 May 2026 14:50:22 -0700 Subject: [PATCH] Avoid function state in IndexedDB page wait --- .../dist/src/workload-test.mjs | 16 ++++++++-------- .../src/workload-test.mjs | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/experimental/javascript-wc-indexeddb/dist/src/workload-test.mjs b/experimental/javascript-wc-indexeddb/dist/src/workload-test.mjs index 47f5a3364..5db87969b 100644 --- a/experimental/javascript-wc-indexeddb/dist/src/workload-test.mjs +++ b/experimental/javascript-wc-indexeddb/dist/src/workload-test.mjs @@ -22,6 +22,12 @@ const deletePromise = new Promise((resolve) => { window.addEventListener(promisesEventsNames.delete, () => resolve()); }); +function waitForPreviousPageLoaded() { + return new Promise((resolve) => { + window.addEventListener("previous-page-loaded", resolve, { once: true }); + }); +} + const suites = { default: new BenchmarkSuite("indexeddb", [ new BenchmarkStep(`Adding${numberOfItemsToAdd}Items`, async () => { @@ -65,14 +71,7 @@ const suites = { new BenchmarkStep("DeletingAllItems", async () => { const numberOfItemsPerIteration = 10; const numberOfIterations = 10; - function iterationFinishedListener() { - iterationFinishedListener.promiseResolve(); - } - window.addEventListener("previous-page-loaded", iterationFinishedListener); for (let j = 0; j < numberOfIterations; j++) { - const iterationFinishedPromise = new Promise((resolve) => { - iterationFinishedListener.promiseResolve = resolve; - }); const todoList = document.querySelector("todo-app").shadowRoot.querySelector("todo-list"); const items = todoList.shadowRoot.querySelectorAll("todo-item"); for (let i = numberOfItemsPerIteration - 1; i >= 0; i--) { @@ -81,8 +80,9 @@ const suites = { } if (j < 9) { const previousPageButton = document.querySelector("todo-app").shadowRoot.querySelector("todo-bottombar").shadowRoot.querySelector(".previous-page-button"); + const previousPageLoadedPromise = waitForPreviousPageLoaded(); previousPageButton.click(); - await iterationFinishedPromise; + await previousPageLoadedPromise; } } }), diff --git a/experimental/javascript-wc-indexeddb/src/workload-test.mjs b/experimental/javascript-wc-indexeddb/src/workload-test.mjs index 66784deec..9722154db 100644 --- a/experimental/javascript-wc-indexeddb/src/workload-test.mjs +++ b/experimental/javascript-wc-indexeddb/src/workload-test.mjs @@ -22,6 +22,12 @@ const deletePromise = new Promise((resolve) => { window.addEventListener(promisesEventsNames.delete, () => resolve()); }); +function waitForPreviousPageLoaded() { + return new Promise((resolve) => { + window.addEventListener("previous-page-loaded", resolve, { once: true }); + }); +} + const suites = { default: new BenchmarkSuite("indexeddb", [ new BenchmarkStep(`Adding${numberOfItemsToAdd}Items`, async () => { @@ -65,14 +71,7 @@ const suites = { new BenchmarkStep("DeletingAllItems", async () => { const numberOfItemsPerIteration = 10; const numberOfIterations = 10; - function iterationFinishedListener() { - iterationFinishedListener.promiseResolve(); - } - window.addEventListener("previous-page-loaded", iterationFinishedListener); for (let j = 0; j < numberOfIterations; j++) { - const iterationFinishedPromise = new Promise((resolve) => { - iterationFinishedListener.promiseResolve = resolve; - }); const todoList = document.querySelector("todo-app").shadowRoot.querySelector("todo-list"); const items = todoList.shadowRoot.querySelectorAll("todo-item"); for (let i = numberOfItemsPerIteration - 1; i >= 0; i--) { @@ -81,8 +80,9 @@ const suites = { } if (j < 9) { const previousPageButton = document.querySelector("todo-app").shadowRoot.querySelector("todo-bottombar").shadowRoot.querySelector(".previous-page-button"); + const previousPageLoadedPromise = waitForPreviousPageLoaded(); previousPageButton.click(); - await iterationFinishedPromise; + await previousPageLoadedPromise; } } }),