perf: keep heavy work off UI thread
This commit is contained in:
parent
12bf126646
commit
deec48ad99
75 changed files with 11703 additions and 519 deletions
20
web/ocs-parse-worker.js
Normal file
20
web/ocs-parse-worker.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import init, { parse_document } from "./worker_pkg/ocs_web_worker.js";
|
||||
|
||||
const ready = init();
|
||||
|
||||
self.onmessage = async ({ data }) => {
|
||||
try {
|
||||
await ready;
|
||||
const encoded = parse_document(data.name, new Uint8Array(data.bytes));
|
||||
// wasm-bindgen returns a view into WebAssembly.Memory. Copy to a standalone
|
||||
// ArrayBuffer before transferring it, otherwise the worker's wasm memory
|
||||
// itself would be detached.
|
||||
const transferable = encoded.slice();
|
||||
self.postMessage({ ok: true, data: transferable.buffer }, [transferable.buffer]);
|
||||
} catch (error) {
|
||||
self.postMessage({
|
||||
ok: false,
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
});
|
||||
}
|
||||
};
|
||||
Loading…
Reference in a new issue