mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-13 06:44:13 +03:00
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
// The worker has its own scope and no direct access to functions/objects of the
|
|
// global scope. We import the generated JS file to make `wasm_bindgen`
|
|
// available which we need to initialize our Wasm code.
|
|
importScripts('./pkg/wasm_in_web_worker.js');
|
|
|
|
console.log('Initializing worker')
|
|
|
|
// In the worker, we have a different struct that we want to use as in
|
|
// `index.js`.
|
|
const {NumberEval} = wasm_bindgen;
|
|
|
|
async function init_wasm_in_worker() {
|
|
// Load the wasm file by awaiting the Promise returned by `wasm_bindgen`.
|
|
await wasm_bindgen('./pkg/wasm_in_web_worker_bg.wasm');
|
|
|
|
// Create a new object of the `NumberEval` struct.
|
|
var num_eval = NumberEval.new();
|
|
|
|
// Set callback to handle messages passed to the worker.
|
|
self.onmessage = async event => {
|
|
// By using methods of a struct as reaction to messages passed to the
|
|
// worker, we can preserve our state between messages.
|
|
var worker_result = num_eval.is_even(event.data);
|
|
|
|
// Send response back to be handled by callback in main thread.
|
|
self.postMessage(worker_result);
|
|
};
|
|
};
|
|
|
|
init_wasm_in_worker();
|