本文共 862 字,大约阅读时间需要 2 分钟。
如果用户频繁点击ajax请求,有两个问题:
1,如果连续点击了5个ajax请求,前4个其实是无效的,趁早结束节省资源。 2,更严重的问题是:最后一个发送的请求,响应未必是最后一个,有可能造成混乱。还需要一个队列来维护发送的请求和响应。 其实已经设计好了该队列的实现方式,后来发现jQuery直接通过abort方法,这样就不需要那么复杂的实现了,毕竟还有其他事情等着完成。 用jquery发送ajax请求的确是太方便了,$.get、$.post、$.ajax等等,但我们有时候需要中途中止ajax请求。举个例子,用comet做聊天时,发送一个请求后,服务端通常过几十秒后才会刷新链接、返回数据。假设服务端是30秒刷新一次链接,如果我们在10秒时想要停止这个ajax请求,怎么办呢?
var ajaxGet=$.ajax("url",{id:2},function(){})ajaxGet.abort(); //终止
注意:abort()后,ajax请求立即停止,但还是会执行后面的function()。如果想避免执行其中的操作,可以在function()开始位置加判断
//终止ajax请求:var ajaxPost=$.ajax("url",{id:2},function(){ if(data.length==0) return true;})ajaxPost.abort(); //终止
//防止重复请求:var request;if(request !=null){ request.abort();}reuest=$.get("url",{id:1},function(){ //处理})// ajax & setTimeout实现 secondTry 在等待一秒之后将firstTry的ajax终止:var firstTry=$.ajax({ //处理})var secondTry=setTimeout(function(){ firstTry.abort();},1000)
转载地址:http://yiesi.baihongyu.com/