Skip to content

duart38/Thread

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alt text

nest badge alt text alt text alt text

  1. This module allows you to write Web Worker code inline with the rest of your code
  2. This module is also somewhat type safe
  3. Allows you to Thread already existing functions
  4. Allows module imports inside the worker

Examples

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);

API

Standard API

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