问题标签 [debouncing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1165 浏览

javascript - Javascript 延迟事件

我有一个函数handleScroll,当窗口的滚动位置发生变化时需要调用它。这是代码

但问题是上述代码最终调用handleScroll过于频繁。如何修改上述代码,以便仅在用户停止滚动 200 毫秒后才调用 handleScroll?

0 投票
13 回答
145097 浏览

jquery - 停止输入/书写后如何触发输入文本中的事件?

我想在我停止在输入文本框中输入(而不是在输入时)字符后触发一个事件。

我试过:

但是这个例子会为每个输入的字符产生一个超时,如果我输入 20 个字符,我会收到大约 20 个 AJAX 请求。

在这个小提琴上,我用一个简单的警报而不是 AJAX 演示了同样的问题。

有没有解决方案,或者我只是为此使用了一种不好的方法?

0 投票
0 回答
227 浏览

jquery - jQuery去抖动幻灯片跳过幻灯片

我为我的个人主页编写了一个插件,它应该滚动浏览一系列元素,捕捉到每个元素 offsetTop。
我正在使用requestanimationframe来消除滚动事件,但有时会跳过幻灯片,我就是不知道为什么。此外,在 Chrome 和 Safari 上,我遇到了window.pageYOffset的问题可能小于 0 并且大于文档高度,因为这些浏览器在 mac(带有触摸板)上使用了某种缓和功能——你将如何处理?

这是代码:

希望有人可以提供帮助。谢谢。

0 投票
2 回答
1198 浏览

system.reactive - Rx 去抖动输入

我需要去抖动输入流。

在第一次出现状态 1 时,我需要等待 5 秒并验证最后状态是否也是 1。只有我有一个稳定的信号。

这是一个不稳定信号的例子。

我尝试使用缓冲区,但缓冲区的起点是固定的,我需要从第一个事件开始等待 5 秒。

0 投票
3 回答
39074 浏览

c - C program a button to perform a task once when pressed (latch)

I am relatively new to c and the Raspberry Pi and am trying simple programs. What I would like is when the button is pressed it printfs once and doesn't printf again until the button is pressed again, even if the button is held down (sort of a latch). I thought maybe adding the second while loop in would fix this, but sometimes it still doesn't detect a button press.

0 投票
1 回答
215 浏览

javascript - 内容更改时去抖动 html 文档高度

假设视口为 100×100 (width × height),文档为空,滚动位置为 (0,0) (x,y)

  1. body.appendChild大小为 100×200 的元素 A
  2. 现在手动滚动到 (0,100)
  3. 一些 javascript 现在删除了 A 和body.appendChilds B (100×50)
  4. 浏览器检测到文档总高度为 50 并滚动回 (0,0)
  5. 一段时间过去了(~150ms)
  6. 一些 javascript 删除 B 和body.appendChilds C (再次 100×200)

现在浏览器仍然在 0,0 处滚动。我正在寻找一个解决方案/库/jQueryPlugin(我必须在 3 和 6 处插入任何内容)以防止(4)发生自定义定义的阈值(在本例中为 ~150 毫秒)。

0 投票
2 回答
12171 浏览

javascript - 去抖不起作用

请参阅http://jsfiddle.net/5MvnA/2/和控制台。

Fs 应该比 Ks 少,但根本没有 Fs。

我得到了去抖代码

从这里http://remysharp.com/2010/07/21/throttling-function-calls/

介意检查我是否做错了吗?

0 投票
2 回答
1058 浏览

javascript - JS/jQuery : 重用一个函数,防止多个函数调用

请原谅我的无知,我最近才开始写javascript。我不是在寻找一个开箱即用的解决方案,而是更多一些有助于我自己编写代码的洞察力。

我正在开发一个全屏、滑动面板类型的网站,可以选择使用箭头键或可点击链接进行导航。

使用箭头键导航时,我的所有功能都运行良好,而我想做的是在使用屏幕导航链接时调用相同的功能。我不确定如何执行此操作,因为函数和变量是在键绑定函数中声明的。

我的第二个问题是我需要一种方法来防止在函数仍在动画时多次调用幻灯片函数。我尝试了各种 setTimeout 实现,以及 Ben Alman 的 doTimeout 和 debounce,但似乎无法使其正常工作。

任何帮助将不胜感激!

这是一个 jsFiddle,其中包含我构建的单工版本:http: //jsfiddle.net/BKpAK/3/

如果您不想摆弄,这里只是 JS:

0 投票
3 回答
9744 浏览

javascript - 如何使用jQuery / javascript将事件处理限制为每X秒一次?

对于快速触发的keypress事件,我想将事件的处理限制为每X秒最多一次。

我已经在使用 jQuery 进行事件处理,因此基于 jQuery 的解决方案将是首选,尽管 vanilla Javascript 也很好。

  • 这个 jsfiddle显示按键快速触发,对处理没有任何限制

  • 这个 jsfiddle使用 vanilla JS 将处理限制为每 0.5 秒一次setTimeout()

我的问题是

  1. jQuery 有内置的方法吗?我在.on() 文档中看不到任何内容

  2. 如果没有,在 vanilla JS 中执行此操作是否有比我在第二个 jsfiddle 示例中使用的更好的模式?

0 投票
3 回答
2917 浏览

java - 多次调用同一个方法时取消方法调用

我想我在这里描述的东西可能有一个名字,但我不知道。所以我的第一个问题是知道这种技术的名称。

这是一个示例:假设您正在网页上实现实时搜索。每次用户在搜索框中键入内容时,您都会触发一个新的搜索查询,并且结果会尽可能频繁地更新。这是一件愚蠢的事情,因为您将发送比您实际需要的更多的查询。每 2-3 个字母发送一次请求或最多每 100 毫秒发送一次请求可能就足够了。

因此,一种技术是安排在键入键后立即执行查询,如果仍有计划但未执行的查询,请取消它们,因为它们现在已经过时了。


现在更具体地说,是否有特定的模式或库可以在 Java 中解决这个问题?

我必须在一个 Swing 应用程序中解决这个问题,我使用了一个 ExecutorService,它返回了可以取消的 ScheduledFutures。问题是我必须为我想要“缓冲”的每个方法调用手动创建一个 Runnable,并跟踪每个 Future 以取消它。

我确定我不是第一个实现这样的东西的人,所以一定有一个可重用的解决方案吗?可能在 Spring 中带有注释和代理?