關於效能優化的那點事 函式防抖

2021-09-18 02:24:33 字數 708 閱讀 6012

假設**有個搜尋框, 使用者輸入文字我們會自動聯想匹配出一些結果供使用者選擇,我們可能首先想到的做法就是監聽keypress事件, 然後非同步查詢結果. 但是如果使用者快速的輸入了一串字元, 假設是10個字元, 那麼就會在瞬間觸發10次請求, 這無疑不是我們想要的, 我們想要的是使用者停止輸入的時候才去觸發查詢的請求.

函式防抖就是讓某個函式在上一次執行後, 滿足等待某個時間內不再觸發此函式後再執行, 而在這個等待時間內再次觸發此函式, 等待時間會重新計算.

underscore.js的函式防抖定義: _.debounce(fn, wait, [immediate]);

debounce接收三個引數:

@params fn: 需要進行函式防抖的函式;

@params wait: 需要等待的時間, 單位為毫秒;

@params immediate: 如果為true, 則debounce會在呼叫時立刻執行一次fn,

而不需要等到wait結束後.

_.debounce = function(fn, wait, immediate) else }}

};return function()

if(callnow)

return result;

}};// demo:

$('#input').keypress(_.debounce(function() , 300));

關於高效能的那點事

園子裡面很多關於高效能,大併發,還有什麼日pv 百萬的架構搭建。其實真心真心很扯淡。對於大部分應用來說,想要高效能,主要是要做到盡可能的減少網路請求 含db redis mongo mq 等 幾乎所有的應用,效能瓶頸永遠是在頻寬那裡,硬體方面這裡就不提了,說說我們能做的事。關於各個元件到cpu 的時...

關於高效能的那點事

園子裡面很多關於高效能,大併發,還有什麼日pv百萬的架構搭建。其實真心真心很扯淡。對於大部分應用來說,想要高效能,主要是要做到盡可能的減少網路請求 含db redis mongo mq等 幾乎所有的應用,效能瓶頸永遠是在頻寬那裡,硬體方面這裡就不提了,說說我們能做的事。找了半天沒有找到那張圖,關於各...

關於高效能的那點事

園子裡面很多關於高效能,大併發,還有什麼日pv百萬的架構搭建。其實真心真心很扯淡。對於大部分應用來說,想要高效能,主要是要做到盡可能的減少網路請求 含db redis mongo mq等 幾乎所有的應用,效能瓶頸永遠是在頻寬那裡,硬體方面這裡就不提了,說說我們能做的事。找了半天沒有找到那張圖,關於各...