`
jhyimu2005
  • 浏览: 185957 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
社区版块
存档分类
最新评论

js ajax发出一段时间请求没有反应时,做出处理(setTimeout)

    博客分类:
  • js
 
阅读更多
应该说不是服务器没反应,而是有时候会非常的慢,当页面请求超过一定时间服务器还没返回信息的话,浏览器就不做任何跳转了,请求也自动停止了,当前页面就好像没做过任何事情一样,这样用户根本就不知道出现的是什么问题,现在就是要当这种情况发生后,跳转到一个提示页面,告诉用户发生了什么事情
setTimeout(test,5000);

这个是在5000毫秒后,如果服务器没有响应的话就会执行setTimeout


setTimeout()在js类中的使用方法  
setTimeout (表达式,延时时间)
setTimeout(表达式,交互时间)
延时时间/交互时间是以豪秒为单位的(1000ms=1s)

setTimeout  在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
setTimeout 在执行时,它从载入后,每隔指定的时间就执行一次表达式

1,基本用法:
   执行一段代码:
   var i=0;
   setTimeout("i+=1;alert(i)",1000);
   执行一个函数:
   var i=0;
   setTimeout(function(){i+=1;alert(i);},1000);
  
   //注意比较上面的两种方法的不同。

   下面再来一个执行函数的:
   var i=0;
   function test(){
       i+=1;
       alert(i);
   }
   setTimeout("test()",1000);
   也可以这样:
   setTimeout(test,1000);

   总结:
   setTimeout的原型是这样的:
   iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
  
  setTimeout有两种形式

  setTimeout(code,interval)
  setTimeout(func,interval,args)

  其中code是一个字符串
  func是一个函数.

  注意"函数"的意义,是一个表达式,而不是一个语句.
  比如你想周期性执行一个函数
  function a(){
      //...
  }
  可写为
  setTimeout("a()",1000)
  或
  setTimeout(a,1000)

  这里注意第二种形式中,是a,不要写成a(),切记!!!
  展开来说,不管你这里写的是什么,如果是一个变量,一定是一个指向某函数的变量;如果是个函数,那它的返回值就  要是个函数

  2,用setTimeout实现setInterval的功能
    思路很简单,就是在一个函数中调用不停执行自己,有点像递归
    var i=0;
    function xilou(){
        i+=1;
        if(i>10){alert(i);return;}
        setTimeout("xilou()",1000);
        //用这个也可以
        //setTimeout(xilou,1000);
    }
   
    3,在类中使用setTimeout
    终于到正题了,其实在类中使用大家遇到的问题都是关于this的,只要解决了这个this的问题就万事无忧了。
呵呵。让我们来分析一下:
   
    function xilou(){

        this.name="xilou";
        this.sex="男";
        this.num=0;
    }
    xilou.prototype.count=function(){
        this.num+=1;
        alert(this.num);
        if(this.num>10){return;}
        //下面用四种方法测试,一个一个轮流测试。
        setTimeout("this.count()",1000);//A:当下面的x.count()调用时会发生错误:对象不支持此属性或方法。
        setTimeout("count()",1000);//B:错误显示:缺少对象
        setTimeout(count,1000);//C:错误显示:'count'未定义
        //下面是第四种
        var self=this;
        setTimeout(function(){self.count();},1000);//D:正确
       
    }
   
    var x=new xilou();
    x.count();
   
    错误分析:
    A:中的this其实指是window对象,并不是指当前实例对象
    B:和C:中的count()和count其实指的是单独的一个名为count()的函数,但也可以是window.count(),因为window.count()可以省略为count()
    D:将变量self指向当前实例对象,这样js解析引擎就不会混肴this指的是谁了。
   
    话说回来,虽然我们知道setTimeout("this.count()",1000)中的this指的是window对象,但还是不明白为什么会是
    window对象^_^(有点头晕...)
    那我们可以想象一下这个setTimeout是怎样被定义的:
    setTimeout是window的一个方法,全称是这样的:window.setTimeout()
    那应该是这样被定义的:
    window.setTimeout=function(vCode, iMilliSeconds [, sLanguage]){
        //.....代码
        return timer//返回一个标记符
    }
    所以当向setTimeout()传入this的时候,当然指的是它所属的当前对象window了。

分享到:
评论

相关推荐

    解决js ajax同步请求造成浏览器假死的问题

    代码执行过程中,开发者最初选择了使用同步请求(async设置为false),结果导致点击按钮后,按钮的文案并没有按照预期更改,同时浏览器界面在一段时间内没有任何响应。 这个问题的根源在于浏览器的渲染UI线程和...

    为jquery的ajax请求添加超时timeout时间的操作方法

    在上述代码中,我们首先使用setTimeout函数实现延时调用,这样可以在发起请求之前等待一段预设的时间。如果checkLoading函数在没有设置延时参数的情况下被调用,那么默认等待1秒钟。 除了设置超时时间以外,我们还...

    js每隔5分钟执行一次ajax请求的实现方法

    2. `setTimeout`:这是一个JavaScript内置函数,它可以在指定的毫秒数之后执行一个函数或一段代码。在上述代码中,`setTimeout`被用来实现定时执行`publicBusi`和`personBusi`。定时时间通过指定毫秒数来计算,例如...

    c# + js + ajax

    在IT行业中,C#、JavaScript(JS)和Ajax(异步JavaScript和XML)是构建现代Web应用程序的关键技术。Ajax允许创建动态、响应迅速的用户界面,而无需每次交互都重新加载整个页面。以下是对这些技术及其在实际应用中的...

    ajax_timer.

    - 初始化定时器:设置一个定时器,每隔一段时间(如5秒)调用一个函数。 - 发送AJAX请求:函数内部构建并发送一个AJAX请求到服务器。 - 处理响应:服务器响应后,回调函数处理返回的数据,更新网页内容。 - 重复执行...

    Ajax无刷新异步调用后台方法获取系统时间显示

    这段代码会在页面加载完成后立即发送一个GET请求到指定的后台接口,获取系统时间。如果请求成功,它会更新页面上的时间显示,并设置定时器每秒再次调用`fetchServerTime`。 3. **后台处理**:在服务器端,我们需要...

    ajax对jquery的支持

    4. **实现实时更新**:为了实现股票数据的实时更新,可以使用`setInterval()`函数每隔一段时间自动发送AJAX请求。但这种方法可能导致不必要的请求,所以更推荐使用`setTimeout()`配合`clearTimeout()`来实现更智能的...

    ajax自动刷新页面

    当页面加载后,设置一个定时器,每隔一段时间就发送Ajax请求,获取服务器的最新数据,然后动态更新页面元素。 3. **JSON数据格式**:尽管Ajax的名称中包含XML,但现在更多的情况是使用JSON(JavaScript Object ...

    JavaScript中从setTimeout与setInterval到AJAX异步

    - `setInterval`则用于每隔指定的毫秒数重复执行同一段代码。其用法为`setInterval(function, milliseconds)`。 在执行setTimeout或setInterval时,主线程会将回调函数放入事件队列中,等待其他任务完成后执行。当...

    利用ajax做类似于百度的自动补全

    当用户停止键入一段时间(如300毫秒)后,我们再发送Ajax请求,以避免频繁请求。可以使用`setTimeout`和`clearTimeout`实现这一功能。 - **Ajax请求**:使用JavaScript的`XMLHttpRequest`对象或更现代的`fetch` API...

    ajax 无刷新 无动作 页面数据自动更新

    每隔一段时间,前端通过Ajax发送请求到后台,后台接收到请求后处理并返回新数据。前端接收到新数据后,利用JavaScript更新页面的相应部分,达到“无动作”更新的效果。 例如,可以创建一个定时函数,每隔几秒钟自动...

    JQUERY AJAX定时操作服务器数据

    可以设置重试机制,当请求失败时,等待一段时间后重新尝试。例如: ```javascript function sendAjaxRequest() { $.ajax({ // ... 配置项 }) .done(function(data) { // 处理数据 }) .fail(function(jqXHR, ...

    js与jQuery终止正在发送的ajax请求的方法

    我们设置了一个定时器`setTimeout()`,在8秒后检查`xmlHttp`对象是否完成了请求,如果没有完成(即`readyState`不为4),则通过`abort()`方法终止请求。 需要注意的是,在终止请求后,如果需要重新发起请求,则应该...

    ajax的定时调用每5秒调用一次

    在本例中,展示了如何使用JavaScript的setTimeout函数实现每5秒钟发送一次AJAX请求,从而定时更新数据。 首先,我们看到代码中有函数sendHTTPRequest,它用于初始化XMLHttpRequest对象,并发送POST请求到指定的URL...

    ajax文本框,挺好用

    7. **优化用户体验**:为了防止频繁请求,可以设置延时触发,例如使用`setTimeout`和`clearTimeout`组合,确保用户停止输入一段时间后再发送请求。 在"AjaxTest"这个文件中,可能包含了实现上述功能的JavaScript...

    Ajax定时刷新局部页面

    Ajax 局部刷新的基本原理是通过 JavaScript 发送 XMLHttpRequest 请求到服务器,服务器处理请求后返回数据,然后客户端根据这些数据更新页面的相应部分。 #### 三、定时刷新功能实现 定时刷新是指按照预设的时间...

    JS中setTimeout的奇妙用法前端函数节流_.docx

    用法一个定时器,先延时该函数的执行,比如用法setTomeout()这个函数延迟一段时间后执行函数,假如在该时间段内还触发了其他事件,我们可以用法清除方法clearTimeout()来清除该定时器,再setTimeout()一个新的定时器...

    如何实现ajax延时发送在空闲之后去发送ajax请求

    在keyup事件处理函数中,可以先使用clearTimeout取消之前的定时器,然后使用setTimeout重新设置一个新的定时器,这样可以保证只有在用户停止输入一段时间后才执行Ajax请求。 4. Ajax请求的取消:有时候可能需要在...

Global site tag (gtag.js) - Google Analytics