Şahsen ben buldum Sıçrama daha kavrar zor gaz .
Her iki işlev de ertelemenize ve bazı yürütme oranını azaltmanıza yardımcı olur. Tekrar tekrar gaz / geri getirme tarafından döndürülen süslü işlevleri çağırdığınızı varsayarsak ...
- Gaz kelebeği : Orijinal işlev, belirtilen periyot başına en fazla bir kez çağrılır.
- Çıkarma : orijinal işlev , arayan belirli bir süre sonra dekore edilmiş işlevi çağırmayı durdurduktan sonra çağrılır .
Geri dönmenin son bölümünü elde etmeye çalıştığı hedefi anlamak için çok önemli buldum. Ayrıca _.debounce uygulamasının eski bir versiyonunun anlaşılmasına yardımcı olduğunu buldum ( https://davidwalsh.name/function-debounce nezaket ).
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
_.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
Çok getirilmiş bir metafor, ama belki de yardımcı olabilir.
Sohbet yoluyla sizinle konuşmayı seven Chatty adında bir arkadaşınız var. Sohbet ettiğinde, her 5 saniyede bir yeni bir mesaj gönderdiğini varsayarsak, IM uygulama simgeniz yukarı ve aşağı sıçrarken, ...
- Naif yaklaşım: her mesajı ulaştığı sürece kontrol edin. Uygulama simgeniz sektiğinde kontrol edin. Bu en etkili yol değil, ama her zaman güncelsiniz.
- Gaz kelebeği yaklaşımı: Her 5 dakikada bir kontrol edin (yenileri olduğunda). Yeni mesaj geldiğinde, son 5 dakika içinde herhangi bir zamanda kontrol ettiyseniz, yok sayın. Halen döngüdeyken bu yaklaşımla zaman kazanırsınız.
- Debounce yaklaşımı: Chatty'yi biliyorsun, bütün bir hikayeyi parçalara ayırıyor, onları bir mesajda birbiri ardına gönderiyor. Chatty tüm hikayeyi bitirene kadar beklersiniz: 5 dakika boyunca mesaj göndermeyi bırakırsa, bitirdiğini varsayarsınız, şimdi hepsini kontrol edersiniz.