问题标签 [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.
jquery - 如何格式化 Ben Alman 的 jQuery Debounce
我在使用Ben Alman 的 jQuery Debounce 插件时遇到语法问题。它以一种格式按预期工作,但我需要另一种格式。
我怎样才能在不引发错误的情况下完成这项工作?
谢谢!!
__
以下是其他可用的格式:
python - pigpio 库和去抖动
我正在使用类似于 http://2.bp.blogspot.com/-DlpGa_yyJ0Y/U ... iagram.png的简单激光束报警电路
我使用 4k7 电阻代替蜂鸣器从该电路向 Pi 输入信号,并在光束受阻时捕获图像。我使用 pigpio 库回调函数将图像捕获为
但问题是有时它会为单个障碍物捕获多个图像。我发现去抖是这种情况的解决方案。如何使用 pigpio 库去抖动。
javascript - 在 debounce 函数中使用 requestAnimationFrame 是个好主意吗?
这是对我对requestAnimationFrame
. 我需要一个去抖动功能,因为每次调整窗口大小时我都会进行一些 DOM 交互,并且我不想让浏览器过载。典型的 debounce 函数每个间隔只会调用一次传递的函数;区间通常是第二个参数。我假设对于很多 UI 工作,最佳间隔是不会使浏览器超载的最短时间。在我看来,这正是要做的requestAnimationFrame
事情:
上面的代码是直接从上面的debounce
链接中抄袭的,但是使用 requestAnimationFrame 而不是 setTimeout。据我了解,这将尽快将传入的函数排队,但是任何传入速度快于浏览器处理能力的调用都将被丢弃。这应该会产生最顺畅的交互。我在正确的轨道上吗?还是我误会了requestAnimationFrame
?
(当然,这只适用于现代浏览器,但是对于 requestAnimationFrame 有一些简单的 polyfill,它们只是回退到 setTimeout。)
javascript - 去抖动无法正常工作
我有两个小提琴。
在第一个 Fiddle 中,debounce 运行良好:
但是当我稍微修改它时,去抖动不能正常工作:
http://jsfiddle.net/hYsRh/272/
谁能告诉我第二个debouce Fiddle有什么问题?
我希望在第二小提琴中使用这种格式的脚本,在这样的滚动功能下:
javascript - 如何对事件进行去抖动?(错误的语法?)
我有点困惑。我想在 windows-resize 上对函数 resizeAd 进行去抖动。我玩过这段代码,但没有任何结果。去抖没有完成。在这种情况下,我必须如何调用去抖动功能?
通过像这样调用它们,去抖动功能可以正常工作: var resizeIframeAd = debounce(function() {... }
javascript - 去抖动 ng-keypress
有没有人有任何指针让我以角度去抖动按键事件?我无法让它去抖动。而且我肯定知道,因为我正在使用 $log.debug 打印出按下的键,并且它触发的次数不是去抖动率。
我已经这样设置了:
并在我的控制器中(不是我在此实例中包含 underscore.js 以利用其 debounce 方法):
提前感谢您的帮助。
javascript - 使用带有定时队列消耗的 Ember 观察者
我正在尝试为广播覆盖构建一个“通知系统”。本质上,我捕获事件,将它们添加到数组中,然后运行一个观察该数组的函数。每次添加一个事件时,我都会运行一个花费给定时间的动画,将其从数组中删除,然后移动到下一个。
我发现这debounce
让我成为了其中的一部分。我可以在动画运行时添加任意数量的事件,并且可以清空队列。
问题是,在处理第一个事件之前,我必须等待指定的时间(在本例中为 5 秒)。但是,当我将 debounce 设置为立即时,一切都会中断,第一个事件将立即处理,但其他任何事情都不会。
我有一种感觉,我需要离开debounce
来解决这个问题,但我不确定那个解决方案是什么。
如果您需要任何澄清,请告诉我!
ruby-on-rails - Rails - 确保每个用户只同时点击一个控制器
tl;dr - 有没有办法确保给定的 Rails 控制器操作在来自同一用户的另一个同时请求进来时停止执行?
在我的 Rails/Angular 应用程序中,我从客户端向 Foursquare API 发出请求。因为它们需要进行身份验证,并且我的身份验证信息应该保持安全,所以我通过我自己的应用程序中的 Rails 控制器传递这些请求。
有关此架构的更深入描述,请查看此半相关问题。
正如那里所阐述的那样,我担心的是,对这个内部控制器的每个请求都会占用服务器时间(并且在 Heroku 上,会占用一个测功机)。我试图尽可能快地采取行动,但我仍然想减少服务器被占用的数量。
我正在做的搜索的实时性加剧了服务器的占用量。该请求作为用户类型发送到我的服务器,而不是输入或任何内容,因为我想允许自动建议。
我正在消除用户输入的抖动(0.4 秒),因此在用户短暂停止输入之前不会发出请求。但是,如果用户在输入时暂停了几次,并且每次都发出一个请求,这可能会很快导致使用多个测功机。
更具体地说,假设 Foursquare 的 API 响应时间约为 1.3 秒,想象一下这种情况:用户输入“ameri”,然后等待 0.4 秒,然后输入“can”,然后等待 0.4 秒,然后输入“beauty”,完成他们的询问。这将发送三个单独的请求,所有这些请求都需要由不同的测功机处理,因为在下一个请求进入之前,没有一个请求有机会返回。
这要么会花费我一大笔钱(如果我有一群用户,这意味着需要大量的测功机来防止并发超时),要么会在用户面前造成非常烦人的等待。
所以我的想法是,如果我可以在服务器端进行追溯去抖动,通过在发送新请求之前终止来自该用户的任何正在运行的 Foursquare 请求,那将是非常棒的。这意味着在上面的具体示例中,虽然启动了 3 个请求,但只有最后一个请求会返回,因为前两个请求会在新请求进入时被丢弃。
我正在考虑
session
为每个变量存储一些变量,这在请求执行时是正确的。然后,如果它被触发,下一个请求就不会出去。但这实际上与我想要的相反,因为我希望在新请求进来时取消原始请求。我只是不知道如何从后者中访问该请求。
这感觉很复杂,所以我猜这可能是不可能的(特别是当每个控制器动作都由一个新的控制器实例响应时),但是如果同一个动作再次被同一个用户击中,有没有人知道取消控制器动作的方法当第一个请求得到解决时?
谢谢!
button - 使用按钮具有不同速度的 VHDL 时钟发生器
我是 VHDL 的新手,目前正在研究生成两种不同时钟速度的时钟发生器。一切正常,除了慢速和快速speed_status之间的切换。“速度按钮”似乎有问题,因为有时我必须多次按下它才能更改当前设置的速度。“重置按钮”始终按预期工作。我的 VHDL 代码有问题还是我需要添加某种软件去抖动?如果是这样,为什么重置按钮有效?您能否给我一些建议,我可以改进时钟发生器的哪些部分(代码/逻辑)?
我使用 Xilinx ISE 13.4 和基于 Xilinx Virtex 5 的 XC5VLX110T。
button - Arduino - 按钮随机触发两次
我编写了一个小型 C++ 程序,它可以在 Arduino Uno (atmega328p) 上交叉编译和运行。它是一个基本的 MIDI 补丁更换器,它允许步进通过 32 个插槽,其中包含程序编号(以数组形式组织)。选择一个插槽后,定时器运行,当它达到 400 毫秒时,程序更改将通过串行 MIDI 协议发送到连接的合成器。但这在这种情况下并不重要。
有两个按钮用于增加和减少当前程序。当前节目以二进制形式显示,带有 5 个 LED。有 32 个程序需要单步执行,00000 代表 1,11111 代表 32。
到目前为止一切正常,我做了一个小类,代表一个按钮并处理去抖动。所以我不认为噪音是错误的原因。
错误/错误如下:一段时间后(我无法重现错误发生的那一刻)按钮触发两次更改程序的动作 - 第一次是按下时,第二次是释放时。另外,如果我按下按钮,等待几秒钟然后松开它......这是不需要的,但我看不出我在哪里犯了错误。
midipatcher.cpp - 入口点
Button.cpp - 关心按钮去抖动的代码:
我认为主类中的时间处理不是问题,它只关心在选择插槽后发送程序更改之前必须经过的 400 毫秒。我已经注释掉了该功能,但问题被拒绝了。
编辑:
这是电路的截图,用fritzing制作,抱歉不是真正的电路布局。
再次编辑:不是。
因为我的知名度不够高,所以不能发截图。图片可在此处获得: