最近在寫setTimeout時,用ajax方式去呼叫,發現怎麼倒數越來越快,原來AJAX在呼叫時,也會把它給重制,就變得倒數越來越快,解決方式,網上有類似的解決方式,以下為轉貼:
有時候我們在使用setTimeout的時候會導致IE特別佔用cpu,有可能會導致死機等情況。
<script language="javascript">
function PollConn(){
TimeCounter=window.setTimeout('PollConn();',5000);
function StopPoll(){
window.clearTimeout(TimeCounter)
}
PollConn();
</script>
上面的方法一般是比較通用的方法。不停的每隔5秒鐘調用一下自己。在一般的運用中,用戶訪問含有這樣代碼的頁是沒感覺出它有什麼問題。但是如果用戶在這樣的頁裡需要停留的時間很長,就會用問題。因為setTimeout會不停的“吐食”CPU,慢慢的CPU最終會被這樣的代碼吃光,造成IE死掉,或停止執行。
解決的辦法,在下次調用之前先用clearTimeout清除一下。
<script language="javascript">
function PollConn(){
if(TimeCounter) window.clearTimeout(TimeCounter) //清除上次的setTimeout
TimeCounter=window.setTimeout('PollConn();',5000);
function StopPoll(){
window.clearTimeout(TimeCounter)
}
PollConn();
</script>