zoukankan      html  css  js  c++  java
  • js的setInterval和setTimeout的那些浅坑

    setInterval和setTimeout的区别简单提一下

    • setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
    • setTimeout() :在指定的毫秒数后调用函数或计算表达式。
    setInterval(code,millisec,lang),
    setTimeout(code,millisec,lang)
    参数描述
    code 必需。要调用的函数或要执行的代码串。
    millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
    lang 可选。 JScript | VBScript | JavaScript
    需要注意的是在使用setInterval,或setTimeout 指定所要运行的函数,并需要给所运行函数传值时,
    尽量不要使用 setInterval(函数名(arg0,arg1),1000)的方式进行传值,因为这样是错误的,它会导致
    //js代码运行到此处时,直接执行该 函数名(arg0,arg1) 这个函数,而不会先等待1000毫秒后再次执行,这个问题
    //不管是在setInterval或者setTimeout中都是如此,假设你参数传参是没有问题的情况下,如果参数有问题,那肯定直接报错了~~,也或者setInterval会出现定时器执行一次就不会再执行等错误情况
    //或者使用 setInterval(”函数名(arg0,arg1)“,1000)的方式进行传值,但尽管使用了“”双引号的
    //方式,包含了所要调用的 函数名称 , 但是对于这样的传参方式,也是需要进行拼接的,
    //最好的在执行定时器时,定时执行所对应的functin函数的方法则是,采用setInterval或setTimeout方法体的形式进行传参
    //如 setTimeout(function(){ 要调用的函数名(arg0,arg1) },1000); 采用这种方法传值,一般都是会没有问题的;setInterval也是如此

    一些小例子:setInterval

    <html>
    <body>
    
    <input type="text" id="clock" />
    <script type="text/javascript">
    var int=self.setInterval("clock()",1000);
    function clock()
    {
    var d=new Date();
    var t=d.toLocaleTimeString();
    document.getElementById("clock").value=t;
    }
    </script>
    此处清除定时器
    <button onclick="int=window.clearInterval(int)">停止</button>
    
    </body>
    </html>

    setTimeout实现定时不断执行,一般则是方法递归方法的方式实现

  • 相关阅读:
    RabbitMQ和Kafka的区别
    如何在 Vim 中复制,剪切,粘贴
    python中的堆支持自定义的比较函数
    LLDP协议(笔记草稿)
    You may have an infinite update loop in a component render function,vue模板报错
    修改element ui样式,el-dialog__header样式,并且不影响全局
    js,小数字符串去除右边零显示
    egg-sequelize创建表
    Cyclic dependency found. Users is dependent of itself,mysql表循环依赖问题
    eggjs sequelize操作多个数据,表名不加s,不默认加创建和修改时间字段
  • 原文地址:https://www.cnblogs.com/zh94/p/7851270.html
Copyright © 2011-2022 走看看