问题标签 [debounce]

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 投票
1 回答
16444 浏览

javascript - 如何在 ReactJS 中使用 debounce

我正在学习 ReactJS 并遇到以下问题。我有一个联系人搜索输入,并希望在用户停止输入后 1000 毫秒内处理它。为此,我使用 debounce 功能:

在填写搜索输入后的控制台日志中,我收到一条警告“出于性能原因,此合成事件被重用。如果您看到此内容,则表示您正在访问已target发布/无效合成事件的属性。此设置为 null。如果您必须保留原始合成事件,请使用 event.persist()"

错误“Uncaught TypeError: Cannot read property 'value' of null at ContactList._this2.handleChange”。

我在函数中使用persist方法。handleChange为什么我会收到此错误?

0 投票
1 回答
556 浏览

swift4 - iOS RXSwift 什么是 debounce 的等价物,它只允许通过第一个事件?

我有一个发送网络请求的按钮。我想忽略此按钮内的双击。我试过.throttle了,但这似乎不起作用。所以我正在尝试.debounce- 这确实忽略了重复的点击,但只允许通过最后一个事件。

我想要的是:在第一次点击时,发送网络请求,在 0.33 秒内忽略后续点击。

哪个 RXSwift 运算符可以帮助我在一个时间窗口内完成一个事件并禁用后续事件?

0 投票
1 回答
814 浏览

unit-testing - 用 Mocha Chai 和 Sinon 测试去抖动的 Vue 方法

如果我有一个 Vue 组件,例如:

我将如何someFunction使用 Mocha + Chai + Sinon 进行测试?

0 投票
2 回答
827 浏览

android - RxJava debounce 运算符仅显示 Android 上的最后一次发射

我正在尝试在 Android 上使用 RxJava 在 1 秒后发出一个数字。

但是,只有最后一项 (7) 被发出。

我究竟做错了什么?

0 投票
3 回答
3599 浏览

vue.js - 使用 debounce 将参数传递给方法的函数 - vue

模板:

方法:

fetchData使用参数 0 -调用fetchData(0),但它不会通过,因为我正在使用_.debounce. 控制台日志显示“未定义”

如何正确传递参数?

0 投票
3 回答
1450 浏览

ios - 如何在输出下一个之前对 RxSwift 进行单元测试?

我正在使用 RxSwift 进行反应式编程,并想测试我的视图模型。我有这样的去抖:

在视图模型中:

然后在测试用例中:

但它没有发出事件。我尝试添加scheduler.advanceBy(550)之后,scheduler.start()但结果是一样的。

请帮忙。

谢谢你。

0 投票
2 回答
1258 浏览

angular - 如何在角度 5 的去抖时间上达到组件的功能?

我如何以角度设置组件功能的去抖动时间。实际上我从 selectTableRow() 方法中找到了一个 api。当我选择 tr 然后点击 api 但是当我选择多个 tr 然后多个请求将发送到服务器。

我希望当我快速选择多个表行时,只发送一个请求,例如(自动完成搜索)。

HTML

方法

0 投票
7 回答
33842 浏览

javascript - 去抖动功能的开玩笑单元测试

我正在尝试为去抖动功能编写单元测试。我很难考虑。

这是代码:

我应该如何开始?

0 投票
1 回答
99 浏览

javascript - Javascript > 解复用/缓存 Promise 函数调用

问题:

我目前正在使用socket.io(服务器端)来处理来自客户端的异步请求。这些请求被传递到上游服务 - 这是相当昂贵/缓慢且速率有限的。我想解复用/缓存对上游服务的调用。例如10 次调用getUserProfile(123)=> 1 次调用上游服务(在一段时间内)

  1. 我尝试使用缓存(lru-cache),但是在从上游服务器获得响应(对于第一次调用 - 所以这不起作用)之前,从客户端收到了一些调用(在毫秒内)。

  2. debounce -promise库听起来像我需要的,但是它没有考虑不同的参数(例如 getUserProfile(123)and getUserProfile(456)=> 期望profile_123and profile_456,但是返回 profile_456(两次)。

如果我举个例子可能最好...

服务器.js

0 投票
5 回答
1895 浏览

arduino - Arduino中断不会忽略下降沿

我在完全消除连接到中断的按钮时遇到了一些麻烦。目标是在按下/释放按钮时使语句void loop()恰好运行一次。

通常最终发生的事情是两件事之一

  1. ISR 标志在按下按钮时设置一次。正如预期的那样,释放按钮没有任何作用。
  2. ISR 标志在按钮被按下时设置一次,在按钮被释放时再次设置。

这是我拥有的确切代码:

这似乎是一种消除中断的流行方式,但无论出于何种原因,它都不适合我。

我希望在按钮释放的第一个下降沿digitalRead(interruptPin)会显示low,因此state不会设置标志。

由于 ISR 更新last_interrupt时间,第一个下降沿之后的连续反弹似乎仍然被成功忽略。这让我相信去抖动不是问题,而是问题digitalRead(interruptPin)

去抖动似乎可以处理除一个状态之外的所有状态。当按钮被释放时,代码仍然偶尔将state标志设置为HIGH

这是一些示例输出:

3643(从开机等待约 3.6 秒后,我按下按钮,约 1 秒后松开)

在与上述相同的场景中,输出有时如下所示:

这显示我按下按钮,但也释放按钮。

我正在使用一个 UNO R3 和一个带有 1k 下拉电阻的瞬时触觉按钮。

我不确定此时出了什么问题。我希望这很简单,如果他们愿意,任何人都可以轻松地在他们的 arduino 上进行测试。