摘要:防抖動(dòng)與節(jié)流點(diǎn)擊查看源碼防抖動(dòng)默認(rèn)不立即觸發(fā)保存作用域保存參數(shù)初始化清空所有定時(shí)器如果是立即觸發(fā)為空時(shí)觸發(fā)操作時(shí)間后置空時(shí)間后觸發(fā)操作防抖動(dòng)立即觸發(fā)防抖動(dòng)節(jié)流默認(rèn)立即觸發(fā)保存作用域保存參數(shù)為空時(shí)立即觸發(fā)時(shí)間后觸發(fā)操作節(jié)流立即觸發(fā)節(jié)流總結(jié)
防抖動(dòng)與節(jié)流
點(diǎn)擊查看源碼防抖動(dòng)
var debounce = function (fn, delay, isImmediate) { var timer = null; // 默認(rèn)不立即觸發(fā) isImmediate = typeof isImmediate === "undefined" ? false : isImmediate; return function () { var ctx = this, // 保存作用域 args = arguments; // 保存參數(shù) // 初始化清空所有定時(shí)器 if (timer) { clearTimeout(timer); } // 如果是立即觸發(fā) if (isImmediate) { if (!timer) { // timer為空時(shí)觸發(fā)操作 fn.apply(ctx, args); } // delay時(shí)間后置空timer timer = setTimeout(_ => { timer = null; }, delay); } else { // delay時(shí)間后觸發(fā)操作 timer = setTimeout(_ => { fn.apply(ctx, args); }, delay); } }; };
防抖動(dòng)立即觸發(fā)
防抖動(dòng)
var throttle = function (fn, delay, isImmediate) { var timer = null; // 默認(rèn)立即觸發(fā) isImmediate = typeof isImmediate === "undefined" ? true : isImmediate; return function () { var ctx = this, // 保存作用域 args = arguments; // 保存參數(shù) if (!timer) { // timer為空時(shí) if (isImmediate) fn.apply(ctx, args); // 立即觸發(fā) timer = setTimeout(function () { clearTimeout(timer); timer = null; if (!isImmediate) fn.apply(ctx, args); // delay時(shí)間后觸發(fā)操作 }, delay); } }; };
節(jié)流立即觸發(fā)
節(jié)流
防抖動(dòng):將多個(gè)操作合并為一個(gè)操作(例如,鍵盤輸入關(guān)鍵字搜索內(nèi)容),在規(guī)定延時(shí)時(shí)間后觸發(fā),如果在定時(shí)器時(shí)間范圍內(nèi)觸發(fā),則會(huì)清楚定時(shí)器,重新計(jì)時(shí)
節(jié)流:在給定的延時(shí)時(shí)間后觸發(fā)一次操作,在此時(shí)間范圍內(nèi)的操作均不觸發(fā)(例如,圖片懶加載、向下無限滾動(dòng)獲取新數(shù)據(jù))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98760.html
摘要:防抖動(dòng)節(jié)流節(jié)流使得一定時(shí)間內(nèi)只觸發(fā)一次函數(shù)。它和防抖動(dòng)最大的區(qū)別就是,節(jié)流函數(shù)不管事件觸發(fā)有多頻繁,都會(huì)保證在規(guī)定時(shí)間內(nèi)一定會(huì)執(zhí)行一次真正的事件處理函數(shù),而防抖動(dòng)只是在最后一次事件后才觸發(fā)一次函數(shù)。 防抖動(dòng)與節(jié)流 針對(duì)一些會(huì)頻繁觸發(fā)的事件如scroll、resize,如果正常綁定事件處理函數(shù)的話,有可能在很短的時(shí)間內(nèi)多次連續(xù)觸發(fā)事件,十分影響性能。所以我們對(duì)于這種事件我們要進(jìn)行防抖動(dòng)或...
摘要:起因面試被問到了節(jié)流和防抖動(dòng)自己對(duì)這兩個(gè)的概念比較模糊都不知道回答了什么鬼從語文和英語學(xué)起首先先看字面意思節(jié)流的意思就是水龍頭關(guān)小點(diǎn)頻率不要那么高防抖動(dòng)這根彈簧你不要來回蹦了我就要你最后停下來的沒有發(fā)生形變的那一刻舉個(gè)例子節(jié)流在改變窗口大小 起因 面試被問到了節(jié)流和防抖動(dòng), 自己對(duì)這兩個(gè)的概念比較模糊, 都不知道回答了什么鬼 從語文和英語學(xué)起 首先, 先看字面意思:節(jié)流(throttl...
摘要:它和防抖動(dòng)最大的區(qū)別就是,節(jié)流函數(shù)不管事件觸發(fā)有多頻繁,都會(huì)保證在規(guī)定時(shí)間內(nèi)一定會(huì)執(zhí)行一次真正的事件處理函數(shù)。 防抖動(dòng) 其核心內(nèi)涵在于延遲處理,也就是將一系列的事件處理程序全部延遲,保障推送進(jìn)來的第一次事件處理 var debounce = function(fn,delay,mustRunDelay){ var timer = null; var t_start; ...
摘要:簡(jiǎn)單的防抖動(dòng)處理,一秒內(nèi)點(diǎn)擊一次向服務(wù)器請(qǐng)求數(shù)據(jù)點(diǎn)擊按鈕向后臺(tái)請(qǐng)求數(shù)據(jù)優(yōu)化點(diǎn)另外一些防抖動(dòng)的小技巧,請(qǐng)參考封裝好的簡(jiǎn)單防抖動(dòng)函數(shù)防抖動(dòng)函數(shù)要執(zhí)行的函數(shù),間隔毫秒數(shù)調(diào)用現(xiàn)成的工具庫防抖動(dòng)節(jié)流 1. 簡(jiǎn)單的防抖動(dòng)處理,一秒內(nèi)點(diǎn)擊一次 var timer = null; $(.coupon).click(function(){ if (timer) { return; } ...
閱讀 2101·2021-11-18 10:02
閱讀 2850·2021-09-04 16:41
閱讀 1142·2019-08-30 15:55
閱讀 1405·2019-08-29 17:27
閱讀 1069·2019-08-29 17:12
閱讀 2535·2019-08-29 15:38
閱讀 2855·2019-08-29 13:02
閱讀 2831·2019-08-29 12:29