定時器
----setTimeout() clearTimeout()
在指定的毫秒數到達之后執行指定的函式,只執行一次
// 創建一個定時器,1000毫秒后執行,回傳定時器的標識
var timerId = setTimeout(function () {
console.log('Hello World');
}, 1000);
// 取消定時器的執行
clearTimeout(timerId);
----setInterval() clearInterval()
定時呼叫的函式,可以按照給定的時間(毫秒)周期呼叫函式
// 創建一個定時器,每隔1秒呼叫一次
var timerId = setInterval(function () {
var date = new Date();
console.log(date.toLocaleTimeString());
}, 1000);
// 取消定時器的執行
clearInterval(timerId);
注意事項:
1.HTML5規范規定了最小延遲時間不得小于4ms,即如果小于4ms,會被當做4ms來處理
2.由于javascript是單執行緒,執行佇列需要進行插入調整,所以setInterval會出現下述問題:a.某些間隔會被跳過 b.多個定時器的代碼執行間隔可能會比預期的要小
3.定時器呼叫傳入函式名稱+() 會導致回呼函式直接執行
4.通過setTimeout遞回自呼叫可以替代setInterval
5.當前頁面處于hide(不可見 離開)狀態時,定時器會休眠,但是佇列會持續添加,會導致失序
----遞回setTimeout實作有序的定時序列

防抖和節流
----防抖
指觸發事件后在n秒內函式只能執行一次,如果在n秒內又觸發了事件,則會重新計算函式執行時間
策略:當事件被觸發時,設定一個周期延遲執行動作,若周期又被觸發,則重新設定周期,直到周期結束,執行動作

----節流
指連續觸發事件但是在n秒中只執行一次函式
節流會稀釋函式的執行頻率
策略:固定周期內,只執行一次動作,若沒有新事件觸發,不執行;周期結束后,又有事件觸發,開始新的周期
特點:連續高頻觸發事件時,動作會被定期執行,回應平滑
計時器版節流

時間戳版節流

束流器版節流

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/301062.html
標籤:其他
上一篇:移動WEB開發之回應式布局
下一篇:DOM事件
