2017-12-24 43 views
2

イムニックアプリの開発にかなり新しく、ウェブワーカーにタスクを委託しようとしています。これは原理を理解するためのちょっとした例です。WebWorkerをAngularで使用するには?

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); 
} 

私の問題は、労働者では、メッセージを受け取るいけないし、ちょうど未定義のエラーをスローします。

Runtime Error: undefined(undefined:undefined)

答えて

1

あなたがそうのようassetsフォルダの中にあなたのworker.jsファイルを配置する必要があります。

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

私はあなたを愛しています。 D – Blubb

+0

おかげで助かりました:) – Sampath

+0

もう一度私を助けてくれるでしょう^^ 私はservice.tsにgeo-json-pathfinderをインポートしました。これを初期化することは私の労働者に委託することになっています。しかし、私のworker.jsでこのモジュールをインポートするとエラーが返されます: "SyntaxError:インポート宣言はモジュールのトップレベルにしか表示されません" – Blubb

関連する問題