2013-08-06 69 views
0

我有一些javascript代碼。javascript檢查執行時間

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

爲什麼這個腳本不響應?不,你不能「抓住」沒有反應的腳本。 – 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