view src/app/services/feature-extraction/FeatureExtractionWorker.ts @ 40:f7244f2155a3

Setup some scaffolding for bootstrapping a worker and loading into a service, providing a mechanism for implementing most of the logic which runs inside the worker in TypeScript.
author Lucas Thompson <dev@lucas.im>
date Thu, 01 Dec 2016 15:46:33 +0000
parents
children 13f5f228ed98
line wrap: on
line source
/**
 * Created by lucas on 01/12/2016.
 */

// TODO TypeScript has a .d.ts file for webworkers, but for some reason it clashes with the typings for dom and causes compiler errors
interface WorkerGlobalScope {
  onmessage: (this: this, ev: MessageEvent) => any;
  postMessage(data: any): void;
}

interface MessageEvent {
  readonly data: any;
}

export default class FeatureExtractionWorker {
  private workerScope: WorkerGlobalScope;

  constructor(workerScope: WorkerGlobalScope) {
    console.log('ctor');
    this.workerScope = workerScope;
    this.workerScope.onmessage = (ev: MessageEvent) => {
      console.log(ev.data);
    };
    let counter = 0;
    setInterval(() => this.workerScope.postMessage(counter++), 1000);
  }
}