1.2.4 • Published 4 years ago

magic-handler v1.2.4

Weekly downloads
12
License
MIT
Repository
-
Last release
4 years ago

Magic Handler

A WebWorker linker extension. For creating links between WebWorkers and MainThreads

Example

// master.ts
import MagicWorker from 'magic-handler/src';

export interface ISlave extends FunctionsMap {
  test(a: string): Promise<string>;
}

class Master extends MagicWorker<ISlave> {
  constructor() { super('./slave.js') }

  // .log functio will be available for Slave and also for Master.
  async log(msg: string) {
    console.log('Slave said: ' + msg);
  }
}

const master = new Master()               // Creates a worker instance.
master.call('goodBoy')                    // Calls the function Slave.goodBoy( ).
  .then(() => master.call('test', 'foo')) // Calls the function Slave.test('foo').
  .then(str => console.log(str));         // Logs "a: foo" after 1 second.

export default master;
// slave.ts
import MagicWorker from 'magic-handler/src';

const timeout = (time: number) => new Promise<void>(res => setTimeout(res, time))

class Slave extends MagicWorker {
  public async test(a: string) {
    await timeout(1000); // Remove after a while and commit performance upgrade!
    return `a: ${a}`;
  }

  public async goodBoy() {
    console.log('Yay!')
    await this.call('log', 'I am a good boy'); // Call a function from master.
    return 'boy';
  }
}

const slave = new Slave(); // Create the MagicHandler instance.