JavaScript定时器setInterval()只执行一次解决方法

JavaScript定时器setInterval()只执行一次解决方法

再度Miren
2023-03-02 / 0 评论 / 133 阅读 / 正在检测是否收录...

为了说明问题,代码很短

  <script>
        var test = function(){
            console.log('a')
        }
        timer1 = setInterval(test(), 1000)
        timer2 = setInterval(console.log('b'), 1000)
    </script>

上面的两个定时器中都只执行了一次,并没有重复执行。

解决方案一:
函数名不要叫括号

var test = function(){
            console.log('a')
        }
timer1 = setInterval(test, 1000)

解决方案二:
在执行的函数用引号括起来(里面使用单引号,则外面用双引号)

var test = function(){
      console.log('a')
  }
  timer1 = setInterval("test()", 1000)
  timer2 = setInterval("console.log('b')", 1000)

使用场景,当重复执行的函数需要传入参数,传入的参数有肯能随时变动,可以用方案二的方法来解决。


 var test = function(num){
     console.log(num)
 }
 num = 10
 timer1 = setInterval("test(num)", 1000)
 timer2 = setInterval(function(){num++}, 2000)

相当于下面的代码

var test = function(num){
     console.log(num)
 }
 num = 10
 timer1 = setInterval(function(){test(num)}, 1000)
 timer2 = setInterval(function(){num++}, 2000)
9

评论 (0)

取消