magic-handler
v1.2.4
Published
A WebWorker linker extension. For creating links between WebWorkers and MainThreads
Downloads
3
Maintainers
Readme
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.