zoukankan      html  css  js  c++  java
  • setTimeout和setInterval的区别(面试题)

    settimeout和setinterval区别

    setTimeout(表达式,时间)  =>  是指延迟指定时间后才调用函数,调用次数仅一次;

    setInterval(表达式,时间)    => 是指每隔指定的时间就指定表达式,次数不为一,好比设置时间为四秒,每隔四秒就执行眨眼这个操作,循环操作下去;

    业务场景的区别

    ·setTimeout用于延迟执行某方法或功能。

    ·setInterval则一般用于刷新表单,对于一些表单的假实时指定时间刷新同步。

    注:

    setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

    实例演示

    <script>
    
        setTimeout("alert('主人, 三秒钟已到了')", 3000 )
    
    </script>
    

      打开上面代码网页,三秒后就会出现一个 alert 对话盒,提示“主人, 三秒钟已到了”

    setInterval()实例演示

    <script>
    setInterval("showTime()", 5000);
    function showTime()
    {
        var today = new Date();
        alert("The time is: " + today.toString());
    }
    
    </script>
    

      注:

    尽量不要用setInterval()

    原因如下:

    (1)setInterval()无视代码错误

    setInterval有个讨厌的习惯,即对自己调用的代码是否报错这件事漠不关心。换句话说,如果setInterval执行的代码由于某种原因出了错,它还会持续不断(不管不顾)地调用该代码。

    (2)setInterval无视网络延迟

    假设你每隔一段时间就通过Ajax轮询一次服务器,看看有没有新数据(注意:如果你真的这么做了,那恐怕你做错了;建议使用“补偿性轮询”(backoff polling))。而由于某些原因(服务器过载、临时断网、流量剧增、用户带宽受限,等等),你的请求要花的时间远比你想象的要长。但setInterval不在乎。它仍然会按定时持续不断地触发请求,最终你的客户端网络队列会塞满Ajax调用。

    (3)setInterval不保证执行

    与setTimeout不同,你并不能保证到了时间间隔,代码就准能执行。如果你调用的函数需要花很长时间才能完成,那某些调用会被直接忽略。

  • 相关阅读:
    2 java开发环境的配置步骤
    1 java 笔记
    sql 创建新表时的完成格式
    sql 将英文句子中的单词首字母转换为大写
    c# datatable 如何转CSV文件
    c#调用存储过程实现批量增加和修改数据
    c#如何使用MemoryStream和BinaryFormatter进行对象的序列化和返序列化
    supersr--KVO/KVC
    supersr--控制器的生命周期:
    Javascript高级编程学习笔记(16)—— 引用类型(5) Function类型
  • 原文地址:https://www.cnblogs.com/smile-xin/p/14687397.html
Copyright © 2011-2022 走看看