diff --git a/cozo-lib-wasm/wasm-react-demo/src/App.js b/cozo-lib-wasm/wasm-react-demo/src/App.js index 7a8a17f5..59e3ca3b 100644 --- a/cozo-lib-wasm/wasm-react-demo/src/App.js +++ b/cozo-lib-wasm/wasm-react-demo/src/App.js @@ -78,7 +78,7 @@ function App() { } function handleQuery() { - if (!db) { + if (!db || inProgress) { setInProgress(false); setErrorMessage([]); setStatusMessage(['database not ready']); @@ -92,38 +92,42 @@ function App() { setErrorMessage([]); setStatusMessage(''); setQueryResults(null); - try { - const t0 = performance.now(); - const res_str = db.run(query, params); - const t1 = performance.now(); - const res = JSON.parse(res_str); - if (res.ok) { - setStatusMessage(`finished with ${res.rows.length} rows in ${(t1 - t0).toFixed(1)}ms`); - if (!res.headers) { - res.headers = []; - if (res.rows.length) { - for (let i = 0; i < res.rows[0].length; i++) { - res.headers.push('' + i); + requestAnimationFrame(() => { + setTimeout(() => { + try { + const t0 = performance.now(); + const res_str = db.run(query, params); + const t1 = performance.now(); + const res = JSON.parse(res_str); + if (res.ok) { + setStatusMessage(`finished with ${res.rows.length} rows in ${(t1 - t0).toFixed(1)}ms`); + if (!res.headers) { + res.headers = []; + if (res.rows.length) { + for (let i = 0; i < res.rows[0].length; i++) { + res.headers.push('' + i); + } + } + } + } else { + console.error('Query failed', res); + setStatusMessage(`finished with errors`); + if (res.display) { + const messages = parse(res.display); + setErrorMessage(messages.spans); + } else { + setErrorMessage([res.message]); } } + setQueryResults(res); + } catch (e) { + setStatusMessage(`query failed`); + setErrorMessage(['' + e]); + } finally { + setInProgress(false); } - } else { - console.error('Query failed', res); - setStatusMessage(`finished with errors`); - if (res.display) { - const messages = parse(res.display); - setErrorMessage(messages.spans); - } else { - setErrorMessage([res.message]); - } - } - setQueryResults(res); - } catch (e) { - setStatusMessage(`query failed`); - setErrorMessage(['' + e]); - } finally { - setInProgress(false); - } + }, 0) + }) } } @@ -157,7 +161,7 @@ function App() {