在没有必要的时候轮询计时器
我见到的很多 Ajax 问题都和滥用 JavaScript 语言内置的计时器功能有关。其中的关键方法是 window.setInterval()。只要看到这种方法,就需要稍微提高警惕;为什么要使用一个计时器呢?当然,计时器有其用途 —— 比如,动画。
window.setInterval()
window.setInterval() 方法告诉页面以特定的时间间隔回调某个函数(比如每秒)。大多数浏览器对使用这些计时器总是说得多,做得少,主要是因为 JavaScript 语言是单线程的语言。如果您要求的时间间隔为 1 秒,那么获得的回调时间间隔可能是 1 秒、1.2 秒、9 秒或任何其他时间。
绝对不需要使用计时器的一种情况就是等待 Ajax 请求的完成。以 清单 1 为例。
<html><script> var req = null; function loadUrl( url ) { if(window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } } else if(window.ActiveXObject) { try { req = new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { try { req = new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) { req = false; } } } if(req) { req.open('GET', url, true); req.send(''); } } window.setInterval( function watchReq() { if ( req != null && req.readyState == 4 && req.status == 200 ) { var dobj = document.getElementById( 'htmlDiv' ); dobj.innerHTML = req.responseText; req = null; } }, 1000 ); var url = window.location.toString(); url = url.replace( /antipat1a_polling.html/, 'antipat1_content.html' ); loadUrl( url ); </script><body> Dynamic content is shown between here:<br/> <div id="htmlDiv" style="border:1px solid black;padding:10px;"> </div>And here.</body></html> (编辑:aniston)
·2024年12月目录 ·2024年11月目录 ·2024年10月目录 ·2024年9月目录 ·2024年8月目录 ·2024年7月目录 ·2024年6月目录 ·2024年5月目录 ·2024年4月目录 ·2024年3月目录 ·2024年2月目录 ·2024年1月目录 ·2023年12月目录 ·2023年11月目录