2014-09-10 2 views
0

shared web worker의 오류 처리/처리 방법은 무엇입니까?공유 웹 작업자 오류 처리

dedicated web worker에 다음과 같은 오류가 발생하면 브라우저의 콘솔에 오류가 표시되지만 작업자가 공유 할 때 오류가 발생합니다 ..!? 공유 웹 노동자

메인 페이지

var worker = new SharedWorker('js/webworker.js'); 

worker.port.onmessage = function(e){ 
    console.log('From worker: '+e.data); 
}; 

worker.port.onerror = function(e){ 
    console.log(e.message+'\nLine: '+e.lineno+'\nFilename: '+e.filename); 
}; 

worker.port.start(); 

worker.port.postMessage('This message should throw an error in the web worker'); 

공유 웹 노동자

var ports = []; 

self.onconnect = function(e){ 
    var port = e.ports[0]; 
    ports.push(port); 

    port.onmessage = function(e){ 
     port.postMessage(e.data); 

     throw Error('hehehe'); 
    }; 

    port.start(); 

    port.postMessage('Worker connected!'); 
}; 

답변

3

당신은 또한 작업자에 console.log()을 사용할 수있는 전용 웹 작업자

..하지만 문서 내용 :

작업자의 스크립트 중 하나에서 캐치되지 않은 런타임 스크립트 오류가 발생할 때마다 이전 스크립트 오류를 ​​처리하는 동안 오류가 발생하지 않은 경우 사용자 에이전트는 스크립트가 포함 된 리소스의 URL에서 오류를 위치와 함께보고해야합니다 행 번호 및 열 번호)에서 WorkerGlobalScope 객체의 onerror 속성을 사용하여 작업자에서 실행중인 스크립트의 원본에서 오류가 발생한 위치를 찾습니다. http://www.w3.org/TR/workers/

그래서 오류가 self에보고하고 모든 포트로 전송됩니다

: http://jsfiddle.net/nhrfgd1L/

: 여기

self.onerror = function (e) { 
    ports.forEach(function (port) { port.postMessage(e); }); 
}; 

그것을 보여줍니다 jsfiddle입니다