2017-12-24 30 views
2

인스턴트 메신저 앱을 개발하고 웹 작업자에게 작업을 아웃소싱하기 위해 새로운 기능을 추가했습니다. 이것은 원리를 이해하는 데 필요한 작은 예일뿐입니다.각도로 WebWorker를 사용하는 방법은 무엇입니까?

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

안녕하세요. 아마도 한번 더 나를 도울 수 있습니다 ^^ geo-json-pathfinder를 내 service.ts로 가져 왔습니다. 초기화는 내 직원에게 아웃소싱하기로되어있는 것입니다. 그러나 내 worker.js에서이 모듈을 가져 오면 오류가 반환됩니다. "SyntaxError : 가져 오기 선언이 모듈의 최상위 수준에만 나타날 수 있습니다." – Blubb