Magic Handler
A WebWorker linker extension. For creating links between WebWorkers and MainThreads
Example
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') }
async log(msg: string) {
console.log('Slave said: ' + msg);
}
}
const master = new Master()
master.call('goodBoy')
.then(() => master.call('test', 'foo'))
.then(str => console.log(str));
export default master;
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);
return `a: ${a}`;
}
public async goodBoy() {
console.log('Yay!')
await this.call('log', 'I am a good boy');
return 'boy';
}
}
const slave = new Slave();