Javascript 下划线的节流功能无法启动
_u.throttlefunction{},250函数是否仅在单击时启动?因为我试图以一个小的延迟运行一些代码,但由于某种原因,它似乎不起作用Javascript 下划线的节流功能无法启动,javascript,underscore.js,Javascript,Underscore.js,_u.throttlefunction{},250函数是否仅在单击时启动?因为我试图以一个小的延迟运行一些代码,但由于某种原因,它似乎不起作用 return _.throttle(function() { return ( $(this).hasClass('dataRevealed') ) ? $(this).addClass('animated fadeOut') : true; }, 350); 编辑:该函数如下所示: Application.CardView.prototype
return _.throttle(function() {
return ( $(this).hasClass('dataRevealed') ) ? $(this).addClass('animated fadeOut') : true;
}, 350);
编辑:该函数如下所示:
Application.CardView.prototype.removeSimilarCards = function(_container) {
return $(_container).find('[data-identifier="card-view"]').each(function() {
console.log("first");
_.throttle(function() {
console.log("inner");
return ( $(this).hasClass('dataRevealed') ) ? $(this).addClass('animated fadeOut') : true;
}, 350);
});
};
代码中可能存在其他问题 我创建了一个示例,以表明它工作得非常完美 代码如下:
var refTime = +new Date();
var fn = _.throttle(function() {
console.log((+new Date() - refTime)/1000);
}, 3000);
window.setInterval(fn, 10);
_.throttle用于通过对函数进行节流来防止函数运行过多次,使其仅每X ms运行一次。您可能希望使用函数队列,在延迟计时器上退出队列
大概是这样的:
Application.CardView.prototype.removeSimilarCards = function(_container) {
var $ele = $(_container),
$cards = $ele.find('[data-identifier="card-view"]');
$cards.each(function() {
var $this = $(this);
$ele.queue('func', function(next){
if($this.hasClass('dataRevealed')){
$this.addClass('animated fadeOut');
}
setTimeout(next, 350);
});
});
setTimeout(function(){
$ele.dequeue('func');
}, 350);
return $cards;
};
正如在官方文档中提到的,传入函数必须是限制版本。你看,在传入之前必须执行节流。我刚把它修好@上述评论中提到了这一点。我们应该更多地阅读官方文件
var throttled = _.throttle(updatePosition, 100);
$(window).scroll(throttled);
为什么不将window.setTimeout用于相同的目的呢?请尝试以下操作:返回$\u container.find….each$\u.throttlefunction{},350;。你能告诉我们每个片段应该做什么吗?似乎您误解了throttle的用途。那么,您想延迟调用each中的函数吗?不幸的是,油门在这里是错误的工具。您需要的是一个函数队列。将函数添加到队列中,然后使用timeout.Wait将其出列。您试图如何处理返回的值?您想延迟函数调用,但想返回值?你到底想做什么?我不知道会出什么问题,因为我还在其他地方使用u.debounce,它很好用。我怀疑$this不起作用,但那也起作用。检查:可能是将油门中的代码交换到其他要调试的代码。我刚刚发现这是因为我的每个函数我认为传递给每个油门函数的@raghaw:function handle应该是throttle function直到现在还没有使用“.queue”:但是,有没有办法一次将它们全部淡出,现在一个一个地淡出?我这样做的原因是因为有一个动画大约需要350毫秒,只有在那之后我才会淡出div并将它们从DOM中删除,所以也许我应该听transitionend?不要假设动画会在特定时间内完成。你是如何制作动画的?它可能有一个回调选项,可以使用它。它是CSS动画,一个翻转动画。我从来没有使用过CSS动画,但是你可以尝试transitionend事件。