我有一个项目列表,项目的顺序可以由用户重新排序。更新列表顺序时,会立即触发一个onSortEnd
函数。它将新订单发送到我的服务器,以更新订单。我让网络请求正常工作,但是我正在尝试实现一次失败,以限制订单发送到我的服务器的次数。例如,如果用户在10秒内更改订单3次,我实际上只需要发送最后一次订单,而不是全部3次。我的请求运行良好,但出于某种原因,我的请求在列表重新排序时立即启动,而不是取消,我也不太清楚原因。
退出函数:
const debounce = (fn, delay) => {
let timer = null;
return () => {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(context, args);
}, delay);
};
};
调用(在对列表进行排序时触发的React组件中的类方法):
onSortEnd = () => {
// this.props.updateItems makes the network request and works just fine...
debounce(this.props.updateItems(updatedList), 3000, false);
};
我更喜欢用香草Javascript这样做。所有的帮助都是非常感谢的。谢谢!
发布于 2018-01-17 12:54:03
试试RxJS#debounce,见RxJS-
https://stackoverflow.com/questions/48301594
复制相似问题