Lodash 油门多次点火

Lodash throttle firing multiple times

我是这样使用 lodash 油门的

const throttledFetch = _.throttle(fetch, 10000, { 'leading': false });

我需要在我从 ws 获得的某个通知事件时触发它。所以我的想法是,如果我几乎同时收到 10 个通知,让 fetch 函数在等待 10 秒时只触发一次。

相反,实际情况是在 10 秒延迟后提取函数被触发 10 次。

我该如何解决这个问题?我可以使用任何其他方法。

欢迎提出任何建议

为调用保留一个计数器并检查它是否仅调用一次。

受限函数在重新渲染之间应保持不变,这意味着我们必须使用 React 的 UseCallback 函数。如果你改变了,这会起作用:

const throttledFetch = _.throttle(fetch, 10000, { 'leading': false });

const throttledFetch = useCallback(_.throttle(fetch, 10000, { 'leading': false }));

如果我们只调用一次 fetch 函数,同时对所有 N 个请求,我们应该使用 debounce 而不是 throttle。这是从 Web 套接字侦听器响应用户交互/某些事件的最佳方式。

响应要快一些,也不要频繁调用。为了完全满足上述要求,我将使用 _debounce.

正如 Tuxedo Joe 在上面的回答中所回答的那样,我们可以采用 useCallback 方法,因为在重新渲染之间引用将保持不变。

const asyncFetch = useCallback(_.debounce(fetch, 10000, { 'leading': false }));