JS計時器setTimeout()與setInterva…
阿新 • • 發佈:2019-02-16
計時器setTimeout()與setInterval()是原生JS很重要且用處很多的兩個方法, 但很多人一直誤以為是相同的功能:
間隔時間重複執行傳入的控制代碼函式. 但實際上, 並非如此, 既然JS給出了兩個不同的命名,
肯定有其迥異之處.
先來看看兩者JS手冊及英文詞典上的解釋:
JS手冊»setTimeout() : 用於在指定的毫秒數後呼叫函式或計算表示式;
英文釋義»timeout() : 超時;暫時休息;工間休息;
JS手冊»setInterval() : 按照指定的週期(以毫秒計)來呼叫函式或計算表示式. 會不停地呼叫函式,直到
clearInterval() 被呼叫或視窗被關閉;
英文釋義»interval() : 間隔;間距;幕間休息;
不難看出, 只要我們仔細體會JS手冊及命名釋義, 就能很容易的區分開兩者的區別. 簡單的說, 兩才的區別在於,setTimeout()方法是在等待指定時間後執行函式, 且只執行一次傳入的控制代碼函式. setInterval()方法是每指定間隔時間後執行一次傳入的控制代碼函式,迴圈執行直至關閉視窗或clearInterval().
為了使迷惑者更容易理解, 特意寫了個例子:
至於用法, 就不用多說了, 明白兩者區別後, 該知道怎麼取捨了.
var timeout=function(){ alert('等待2s後彈出,僅此一次!在等待時間內clearTimeout可停止執行!') } var interval=function(){ alert('每2s迴圈彈出,直至clearInterval或關閉視窗!') } var input=document.getElementsByTagName_r('input'); var clearTimeoutFun=null; var clearIntervalFun=null; input[0].onclick=function(){ clearTimeoutFun=setTimeout(timeout,2000); } input[1].onclick=function(){ clearTimeout(clearTimeoutFun); } input[2].onclick=function(){ clearIntervalFun=setInterval(interval,2000); } input[3].onclick=function(){ clearInterval(clearIntervalFun); }