2014-10-07 161 views
0

有沒有人知道是否有更有效的方式來處理重複功能比牛仔的Throttle plugin?我一直在使用它,並喜歡它,但在過去幾年裏,還有其他腳本/創新技術能夠更有效地處理任務嗎?是否有更有效的方法來處理重複功能?

作爲參考,一個任務的例子可能是一個在瀏覽器調整大小時觸發的函數。傳統上,我會處理,像這樣:

$(window).resize($.throttle(250, true, 
    function() { 
     $(window).trigger('onResizeBegin'); 
    } 
)); 

上述限制,我想知道是否有更好的方法來聽這些類型的重複檢查的次數包括功能火災等。在這種情況下,也許是瀏覽器拖動開始/停止的承諾,而不是一個經常檢查真/假的函數。

+0

究竟是什麼「任務」?運行功能不超過每n毫秒一次?最有效的方式將永遠是原生的,而不是使用插件。 – 2014-10-07 16:12:31

+0

是真的,但我指的是jQuery中的效率。更新了更具體的問題。 – dustintheweb 2014-10-07 16:48:28

+1

那麼你的情況會是「更高效」的標準 – 2014-10-07 16:49:23

回答

0

的另一種方式來做到這一點

$(window).resize($.throttle(250, true, 
    function() { 
     $(window).trigger('onResizeBegin'); 
    } 
)); 

function onResize() { 
    setTimeout(function() { 
    $(window).one('resize.throttled', onResize); 
    }, 250); 
    $(window).trigger('onResizeBegin'); 
) 
$(window).one('resize.throttled', onResize); 

,這樣在在中間時間resize事件不會觸發的。

.one()是一個讓事件只觸發一次的jquery事情。

+0

聽起來有點像你所做的只是內聯「節流」功能(而OP的代碼更清晰) – Bergi 2014-10-07 17:09:28

+1

這是非常不同的! OP的版本會調用函數'function(){/ * noop * /}'幾千次或者其他任何東西。我的版本會運行事件處理程序*一次*。 – 2014-10-07 17:31:03

相關問題