0

我有以下带有 Pusher 的代码:

Echo.private("channel").listen(".foobar", (e) => {
   this.fetchData();
});

当有传入请求时,我希望再次获取数据。但不是在每个 Pusher 事件中。我希望在 5 秒内只获取一次数据。

我在考虑当有新的传入事件时重置的间隔,但是如何实现呢?

4

1 回答 1

0

好的,首先它是一个Laravel Echo代码。它可能在幕后使用推送器,但说它是推送器代码有点不正确。

然后,如果我理解正确,您需要某种去抖动功能。例如lodash 提供一个.

const debouncedFunction = _.debounce(() => {
    this.fetchData()
}, 5000);

Echo.private('channel').listen('.foobar', e => {
   debounced()
})

debounce将创建函数的去抖动版本,然后您可以调用它,甚至取消它,因为它带有cancel方法。

debouncedFunction.cancel()
于 2020-09-15T16:11:05.643 回答