Javascript 下划线u.debounce():如何仅在上次接收时执行方法?

Javascript 下划线u.debounce():如何仅在上次接收时执行方法?,javascript,underscore.js,Javascript,Underscore.js,\uu.debounce()以\uu.debounce(函数,x)的形式最多每x毫秒触发一次。。我想调整它,使其仅在最后一次\uu.debounce()之后执行一个x毫秒的方法 我该怎么办?(我读过,$。顺便说一句,debounce就是这么做的。) 我试过这么做,但它不是防弹的(更不用说屁股丑了) 如何优雅地做到这一点 来自: \u.debounce(函数,等待,[立即]) 传递立即参数的true,使去抖动触发 函数位于等待的前缘而不是后缘 间隔在防止意外事故等情况下非常有用 双击“提交”按钮以

\uu.debounce()
\uu.debounce(函数,x
)的形式最多每x毫秒触发一次。。我想调整它,使其仅在最后一次
\uu.debounce()
之后执行一个
x
毫秒的方法

我该怎么办?(我读过,
$。顺便说一句,debounce
就是这么做的。)

我试过这么做,但它不是防弹的(更不用说屁股丑了)

如何优雅地做到这一点

来自:

\u.debounce(函数,等待,[立即])

传递
立即
参数的
true
,使
去抖动
触发 函数位于等待的前缘而不是后缘 间隔在防止意外事故等情况下非常有用 双击“提交”按钮以避免第二次触发


所以,
$(window).on(“resize”,u.debounce(resizeMap,100))
应该可以正常工作。

阅读您的评论后,这一点现在更清楚了

也许这是我的浏览器(不经常发生调整大小事件,导致调用_debounce?在Chrome上测试),但在调整大小的同时,我不断收到对取消Bounce函数体的多个调用。好像它的行为和节流阀完全一样,现在我想起来了。。奇怪的东西

50ms是一个相当低的去盎司时间。我打赌它是按预期工作的,你只需要更长的去盎司时间。50毫秒是1/20秒。我不确定窗口大小调整事件触发得是否那么快。但即便如此,调整大小时鼠标移动的最小停顿也可能触发这种情况


删除去抖动函数中的所有这些
setTimeout
废话,并将去抖动时间设置为更像
250
的值,我打赌它会像你所希望的那样工作。

这有点让人搞不清你在追求什么。你能再解释一下吗?你想把你的底片去掉吗?老兄。。。您所描述的内容似乎正是
debounce
的设计目的。你为什么需要额外的超时时间?呵呵。。也许这是我的浏览器(不经常发生调整大小事件,导致调用_debounce?在Chrome上测试),但在调整大小的同时,我不断收到对取消Bounce函数体的多个调用。好像它的行为和节流阀完全一样,现在我想起来了。。奇怪的东西。现在我很困惑<代码>\每个文档的节流阀“实际上每等待毫秒最多只调用一次原始函数”。所以一次也不像你描述的那样。哎呀,最好忘了这件事。对不起,我把他们弄糊涂了。
var timeout;
$(window).on("resize",_.debounce(function(){
  if(timeout){
    clearTimeout(timeout);
  }
  //when debounce comes in we cancel it.. this means only the latest debounce actually fires.
  //not bullet proof
  timeout = setTimeout(resizeMap,100);
},50));