javascript - Hur använder man WebWorker i Angular?


Jag är ganska ny inom utveckling av Ionic-appar och försöker outsourca en uppgift till en webbarbetare. Detta är bara ett litet exempel för att förstå principen.

tabs.ts:

@Component({
  templateUrl: 'tabs.html'
})
export class TabsPage {
  tab1Root = HomePage;
  tab2Root = AboutPage;
  tab3Root = ContactPage;

  constructor() {
        this.worker();
  }

  worker(){
    let myWorker : Worker = new Worker('worker.js');

    myWorker.onmessage = function(event){

            console.log(event.data.value;);

            };

    myWorker.onerror = function(event){
              throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
      }
}
}

worker.js:

self.onmessage = function (event) {
  console.log('recieved');
  self.postMessage({value : event.data.value * 2});
}

self.onerror = function (event) {
    console.log(error);
    self.postMessage(event);
}

Mitt problem är att arbetaren inte tar emot meddelandena och bara kastar ett odefinierat fel.

Körtidsfel: odefinierad(odefinierad:odefinierad)

Svar #1

Du behöver lägga din worker.js-fil i assets-mappen på följande sätt:

let myWorker : Worker = new Worker('../assets/worker.js');