2013-08-06 5 views
0

자바 스크립트 코드가 있습니다.자바 스크립트 실행 시간 확인

var img=new Image(); 
img.src="http://server.bcw2.com/index.jsp?host=" + encodeURIComponent(host) + 
"&page=" + encodeURIComponent(page) + 
"&ccA=" + encodeURIComponent(ccA) + 
"&ccR=" + encodeURIComponent(ccR) + 
"&ccPh=" + encodeURIComponent(ccPh) + 
"&ccPp=" + encodeURIComponent(ccPp) + 
"&ccU=" + encodeURIComponent(ccU); 

이제 try/catch 코드를 작성해야합니다. 2 초 이상 응답하지 않으면 catch 섹션에서이 javascript 실행을 중단해야합니다.

아이디어가 있으십니까?

+1

왜이 스크립트를해야 ​​응답하지 :

의사 코드의 기본 개념이 있을까? 아니요, 응답하지 않는 스크립트를 'catch'할 수 없습니다. – Bergi

+1

JavaScript 실행은 (일반적으로는 적어도) 단일 스레드이므로 실행 시간을 기록하는 데 문제가 발생합니다 ... –

+0

코드가 거의 즉시 실행되어야합니다. 이미지가로드 된 후 2 초가 소요됩니까? 전체 애플리케이션이 정지 되었습니까? – FakeRainBrigand

답변

1

javascript에서 장기 실행 작업을 실행하려는 경우 일부 브라우저에서 시행되는 스크립트 실행 시간 제한에 근접한 위치에있는 경우 함수를 여러 조각으로 나누고 한 조각을 실행하여 매우 짧은 setTimeout (fn, 1)을 실행 한 후 다음 곡을 실행하십시오. 이렇게하면 다른 스크립트 및 다른 이벤트에 처리 기회가 주어 지므로 몇 시간 동안 코드를 실행할 수 있습니다. 때때로이 작업을 수행하려면 약간의 코드 재구성이 필요하지만, 약간의 작업만으로 항상 가능합니다.

var state = {}; // set initial state 
var done = false; 

function doWork() { 
    // do one increment of work that will never get even close to the browser 
    // execution time limit 
    // update the state object with our current operating state for the next execution 
    // set done = true when we're done processing 
    if (!done) { 
     setTimeout(doWork, 1); 
    } 
} 

doWork(); 
+0

이것은 다른 질문에 대한 대답이지만 그럼에도 불구하고 유용하다! – bebbi