JavaScript定時器setInterval()只執行一次解決方法
阿新 • • 發佈:2020-11-14
為了說明問題,程式碼很短
<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)
可參考:https://blog.csdn.net/chenbetter1996/article/details/85267605