【发布时间】:2019-11-01 06:17:05
【问题描述】:
我有一个场景,我需要在输入完成两秒后调度一个动作。 (假设用户输入 1000 时没有 2 秒的间隔,所以我需要在输入 1000 并在 2 秒后发送操作)。
以前我使用debounce-promise 来做这样的事情,我需要从 API 中获取下拉列表,但为此我直接在组件中使用了带有 AJAX 调用的库。它工作正常。
现在我需要发送这样的操作。
// should be dispatched only for the last request
const getRateReq = dispatch(getRates());
const getRate = debounce(getRateReq, 2000, {
leading: false,
});
const onChange = (e) => {
setValue(e.target.value);
getRate(e.target.value);
}
现在,该动作也仅在完成输入两秒后才调度。但随后它会发出 1、10、100、1000 的所有请求(即使在没有两秒间隔的情况下输入 1000)。如何修复此问题并仅在 2 秒内为最后一个输入调度一个动作?
任何帮助将不胜感激。谢谢
编辑:添加了基本的 onChange 功能
【问题讨论】:
标签: javascript reactjs redux promise debounce