我有以下带有 Pusher 的代码:
Echo.private("channel").listen(".foobar", (e) => {
this.fetchData();
});
当有传入请求时,我希望再次获取数据。但不是在每个 Pusher 事件中。我希望在 5 秒内只获取一次数据。
我在考虑当有新的传入事件时重置的间隔,但是如何实现呢?
我有以下带有 Pusher 的代码:
Echo.private("channel").listen(".foobar", (e) => {
this.fetchData();
});
当有传入请求时,我希望再次获取数据。但不是在每个 Pusher 事件中。我希望在 5 秒内只获取一次数据。
我在考虑当有新的传入事件时重置的间隔,但是如何实现呢?
好的,首先它是一个Laravel Echo
代码。它可能在幕后使用推送器,但说它是推送器代码有点不正确。
然后,如果我理解正确,您需要某种去抖动功能。例如lodash
提供一个.
const debouncedFunction = _.debounce(() => {
this.fetchData()
}, 5000);
Echo.private('channel').listen('.foobar', e => {
debounced()
})
debounce
将创建函数的去抖动版本,然后您可以调用它,甚至取消它,因为它带有cancel
方法。
debouncedFunction.cancel()