2014-10-07 98 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

相关问题