- This module allows you to write Web Worker code inline with the rest of your code
- This module is also somewhat type safe
- Allows you to Thread already existing functions
- Allows module imports inside the worker
See examples folder for more examples
let thread = new Thread<number>((e: MessageEvent)=>{
console.log('Worker: Message received from main script');
const result = e.data[0] * e.data[1];
if (isNaN(result)) {
return 0;
} else {
console.log('Worker: Posting message back to main script');
return(result);
}
}, "module");
thread.onMessage((e)=>{
console.log(`back from thread: ${e}`)
})
thread.postMessage([10, 12])
Instead of using the workers postMessage() method we return value from withing our method
Here's a few more examples
function someFunction(e: MessageEvent){
return 0;
}
new Thread((e: MessageEvent)=>{return 0}, "module"); // inline Thread with return type of number
new Thread(someFunction, "module"); // thread an already existing function
new Thread(someFunction, "module", ['import Something from "../some.bundle.js";']); // thread with custom importing
Async support
const thread = new Thread<string, number>(async (_) => {
console.log("Worker: Message received from main script");
// Some async logic...
await new Promise((ir) => setTimeout(ir, 2000));
return "DONE";
}, "module");
thread.onMessage((e) => {
console.log(`recived back from thread: ${e}`);
});
thread.postMessage(0);
Method / variable | Description |
---|---|
worker | The Worker. |
stopped | Tells if the worker has been stopped |
postMessage(msg) | Sends data to the Thread |
stop() | calls terminate on the worker. |
remove() | Removes the current worker file from the temporary folder. NOTE: Can be used while the program is running (calls stop()..) |
onMessage(callback: (e: T) =>void) | Bind to the worker to receive messages |