zoukankan      html  css  js  c++  java
  • 间歇调用和超时调用(setTimeout和setInterval)

        

       javascript是单线程语言,但它允许通过设置超时值setTimeout和间歇时间值setInterval来调度代码在特定的时刻执行。前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码。

          超时调用使用window对象的setTimeout()方法,它接受两个参数:要执行的代码 和  以毫秒表示的时间。第一个参数可以是包含javascript语句的字符串(不推荐使用),也可以是函数。第二个参数是一个表示等待多长时间的毫秒数,但是经过该时间后指定的代码不一定会执行。javascript是一个单线程序的解释器,因此一定时间内只能执行一段代码。为了控制要执行的代码,就有一个javascript任务队列。这些任务会按照将它们添加到队列的顺序执行。setTimeout()的第二个参数告诉javascript再过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执行。

         调用setTimeout()之后,该方法会返回一个数值ID,表示超时调用。这个超时调用ID是计划执行代码的唯一标识,可以通过它来取消超时调用。要取消尚未执行的超时调用计划,可以同过clearTimeout()方法并将相应的超时调用ID做为参数传递给它。在使用超时调用时,没有必要跟踪超时调用ID,因为每次执行代码之后,如果不再设置另一次超时调用,调用就会停止。(主要是在指定的时间尚未过去之前调用clearTimeout(),就可以完全取消超时调用,前面的代码在设置超时调用之后马上又调用了clearTimeout(),结果就跟什么也没有发生一样。超时调用的代码读书在全局作用域中执行的

        间歇调用与超时调用类似,只不过它会按照指定的时间间隔重复执行代码,直至间歇调用被取消或者页面被卸载。设置间歇调用的方法是setInterval(),它会接受的参数与setTimeout()相同:要执行的代码(字符串或函数)和每次执行之前需要等待的毫秒数。调用setInterval()方法也会返回一个间歇调用ID,该ID可以用于在将来某个时刻取消间歇调用。要取消尚未执行的间歇调用,可以使用clearInterval()方法并传入相应的间歇调用ID。取消间歇调用的重要性要远远高于取消超时调用。因为在不加干涉的情况下,间歇调用将会一直执行到页面卸载。(ps:建议少用setInterval(),可以用setIimeout()代替

    例子:

      

    var num = 0,
         max = 10;
    function incrementNumber(){
         num++;
         if( num <max )
                    setIimeout(incrementNumber,500);
          else
                    alert("done");
    }
    setTimeout(incrementNumber,500);
  • 相关阅读:
    软件工程——结构化方法
    静态变量的坑
    OpenCV中对Mat的遍历访问与赋值
    SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0
    Ext.Net中的Task控件的使用
    字符集越界 正则表达式匹配车牌
    [TOEIC] 2013年12月25日托业考试总结
    WebKit 内容整理
    [C#/.NET]how to implement web application localization in .net 4.0
    C# 代码为什么比 C++代码 编译速度快?
  • 原文地址:https://www.cnblogs.com/hanbingljw/p/3500280.html
Copyright © 2011-2022 走看看