2014-03-24 3 views
1

우리가 근무를 시작하고는 BLOB에서 개체의 URL을 생성 말 지금까지 전화 :수명 시간

worker.terminate(); 

이 객체의 URL을 죽일 것인가, 또는 그것은을 위해 남아 : 작업자를 시작 코드의

u.revokeObjectURL(objUrl); 

대신을, 우리는 단순히 전화 원본 페이지 창의 기간?

답변

1

좋아, 답변이없는 상태에서, 나는 이것을 테스트하기로 결정 자신 :

var u = window.URL || window.webkitURL; 
var f='('+ 

function(rootScope){ 
    var u = rootScope.URL || rootScope.webkitURL; 
    var blob=new Blob([ "hello world!" ], { type: 'text/plain' }); 
    var blobURL = u.createObjectURL(blob) ; 
    rootScope.postMessage(blobURL); 
}.toString()+ 

')(this)'; 
console.log(f); 
// Build a worker from an anonymous function body 
var blobURL = u.createObjectURL(new Blob([ f ], 
              { type: 'application/javascript' })); 

var worker = new Worker(blobURL); 
worker.onmessage=function(e){ 
    worker.terminate(); 
    setTimeout(function(){ 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', e.data, false); 
     xhr.send(null); 
     console.log(xhr.responseText); //prints "hello world!" 
    },5000); 
}; 

// Won't be needing this anymore 
u.revokeObjectURL(blobURL); 
에서 볼 수있는 바와 같이

, 우리는 웹 노동자를 종료에도 오초 후에, 우리는 여전히 객체의 URL을 읽을 수 있습니다 그것은 창조했다.