你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
Ajax 和 XML: 五种 Ajax 反模式(2)
 

在没有必要的时候轮询计时器

我见到的很多 Ajax 问题都和滥用 JavaScript 语言内置的计时器功能有关。其中的关键方法是 window.setInterval()。只要看到这种方法,就需要稍微提高警惕;为什么要使用一个计时器呢?当然,计时器有其用途 —— 比如,动画。

window.setInterval() 方法告诉页面以特定的时间间隔回调某个函数(比如每秒)。大多数浏览器对使用这些计时器总是说得多,做得少,主要是因为 JavaScript 语言是单线程的语言。如果您要求的时间间隔为 1 秒,那么获得的回调时间间隔可能是 1 秒、1.2 秒、9 秒或任何其他时间。

绝对不需要使用计时器的一种情况就是等待 Ajax 请求的完成。以 清单 1 为例。


清单 1. Antipat1a_polling.html
                
<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月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089