Fork me on GitHub

js中定时器setTimeout与setInterval使用方法经验总结

前言,最近在做一个音频播放项目的时候,碰到播放时间精度的问题,捣鼓了几天,最终巧妙的运用定时器去降低了错误发生频率

正题,下面是对定时器的使用总结,如有错误之处,请读者加以纠正.

延迟执行(1次)

  • setTimeout
    • 定义

      • setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
    • 用法(不带参数函数)

      • 第一种
        • setTimeout(function () {
          }, timeout);
        • demo
          // 测试延迟执行的函数
              function Fun1() {
                  alert("不带参数函数");
              }
          
              setTimeout(function(){
                  Fun1();
              }, 2000);
              //或者下面这种写法
              setTimeout(() => {
                  Fun1();
              }, 2000);
          
      • 第二种
        • setTimeout(function,timeout);
        • demo
           // 测试延迟执行的函数
               function Fun1() {
                   alert("不带参数函数");
               }
               //注意这里调用的函数不加括号
               setTimeout(Fun1, 2000);
          
      • 第三种
        • setTimeout('function()',timeout);
        • demo
           // 测试延迟执行的函数
               function Fun1() {
                   alert("不带参数函数");
               } 
              //注意这里调用的函数需要加括号
               setTimeout('Fun1()',2000);
          
    • 用法(带参数函数)

      • 第一种
        • setTimeout(function () {codes...
          }, timeout);
        • demo
          // 测试延迟执行的函数
              function Fun2(str1,str2) {
                  alert("带参数函数"+str1+str2);
              }
          
              setTimeout(function(){
                  Fun2('123','456');
              }, 2000);
              //或者下面这种写法
              setTimeout(() => {
                   Fun2('123','456');
              }, 2000);
          
      • 第二种
        • setTimeout(function,timeout,param1,param2,...);
        • demo
           // 测试延迟执行的函数
              function Fun2(str1,str2) {
                  alert("带参数函数"+str1+str2);
              }
               //注意这里调用的函数不加括号
               setTimeout(Fun2, 2000,'参数1内容','参数2内容');
          
      • 第三种
        • setTimeout('function(param1,param2,...)',timeout);
        • demo
           // 测试延迟执行的函数
               function Fun2(str1,str2) {
                  alert("带参数函数"+str1+str2);
              }
              //注意这里调用的函数需要加括号
               setTimeout('Fun2("参数1内容","参数2内容")',2000);
          
    • 停止定时器

      • clearTimeout(timerHandle);
      • demo
        function Fun3(str1) {
          alert(str1);
        }
          //设置定时器
        var timer=setTimeout(Fun3,2000,"参数1");
          //清除指定定时器
          clearTimeout(timer)
        

延迟执行(多次)

  • setTimeout
    • 定义

      • setInterval() 方法用于在间隔指定的毫秒数后调用函数或计算表达式,重复执行。
    • 跟setTimeout()用法基本一致

    • 用法(不带参数函数)

      • 第一种
        • setInterval(function () {
          }, timeout);
        • demo
          // 测试延迟执行的函数
              function Fun1() {
                  alert("不带参数函数");
              }
          
              setInterval(function(){
                  Fun1();
              }, 2000);
              //或者下面这种写法
              setInterval(() => {
                  Fun1();
              }, 2000);
          
      • 第二种
        • setTimeout(function,timeout);
        • demo
           // 测试延迟执行的函数
               function Fun1() {
                   alert("不带参数函数");
               }
               //注意这里调用的函数不加括号
               setInterval(Fun1, 2000);
          
      • 第三种
        • setInterval('function()',timeout);
        • demo
           // 测试延迟执行的函数
               function Fun1() {
                   alert("不带参数函数");
               } 
              //注意这里调用的函数需要加括号
               setInterval('Fun1()',2000);
          
    • 用法(带参数函数)

      • 第一种
        • setInterval(function () {codes...
          }, timeout);
        • demo
          // 测试延迟执行的函数
              function Fun2(str1,str2) {
                  alert("带参数函数"+str1+str2);
              }
          
              setInterval(function(){
                  Fun2('123','456');
              }, 2000);
              //或者下面这种写法
              setInterval(() => {
                   Fun2('123','456');
              }, 2000);
          
      • 第二种
        • setInterval(function,timeout,param1,param2,...);
        • demo
           // 测试延迟执行的函数
              function Fun2(str1,str2) {
                  alert("带参数函数"+str1+str2);
              }
               //注意这里调用的函数不加括号
               setInterval(Fun2, 2000,'参数1内容','参数2内容');
          
      • 第三种
        • setInterval('function(param1,param2,...)',timeout);
        • demo
           // 测试延迟执行的函数
               function Fun2(str1,str2) {
                  alert("带参数函数"+str1+str2);
              }
              //注意这里调用的函数需要加括号
               setInterval('Fun2("参数1内容","参数2内容")',2000);
          
    • 停止定时器

      • clearInterval(timerHandle);
      • demo
        function Fun3(str1) {
          alert(str1);
        }
          //设置定时器
        var timer=setInterval(Fun3,2000,"参数1");
          //清除指定定时器
          clearInterval(timer)
        
posted @   粥里有勺糖  阅读(3064)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示