在 Angular2 和 Typescript 滚动中使用 lodash debounce 不起作用
Using lodash debounce in Angular2 & Typescript scroll not working
我有以下调用 lodash 去抖功能的代码:
@HostListener("window:scroll", [])
onWindowScroll() {
if (myBoolean)
_.debounce(this.onScrollDown(), 1500, false);
}
}
private onScrollDown() {
console.log("onScrollDown")
}
但是我的控制台出现了这个错误:
Argument of type 'void' is not assignable to parameter of type 'Function'.
以及浏览器上的以下内容:
TypeError: Expected a function
at Function.debounce
顺便说一句,我正在使用打字稿
我对lodash不熟悉,但我想你想要的是:
private debouncedOnScroll = _.debounce(() => this.onScrollDown(), 1500, {});
@HostListener("window:scroll", [])
onWindowScroll() {
this.debouncedOnScroll();
}
private onScrollDown() {
console.log("onScrollDown")
}
感谢 JB Nizet,我可以解决我的需求,这是我的方法:
1) 创建你想要去抖动的函数:
private projectsLoad(myParameter): void {
// function code here...
};
2) 将其分配给 class 的 field/member:
private debounceProjectsLoad = _.debounce(
(myParameter) => this.projectsLoad(myParameter),
1500,
true
);
3) 在需要时调用去抖field/meber:
public loadProjectsGroup(myParameter: string): void {
this.debounceProjectsLoad(myParameter);
}
我有以下调用 lodash 去抖功能的代码:
@HostListener("window:scroll", [])
onWindowScroll() {
if (myBoolean)
_.debounce(this.onScrollDown(), 1500, false);
}
}
private onScrollDown() {
console.log("onScrollDown")
}
但是我的控制台出现了这个错误:
Argument of type 'void' is not assignable to parameter of type 'Function'.
以及浏览器上的以下内容:
TypeError: Expected a function
at Function.debounce
顺便说一句,我正在使用打字稿
我对lodash不熟悉,但我想你想要的是:
private debouncedOnScroll = _.debounce(() => this.onScrollDown(), 1500, {});
@HostListener("window:scroll", [])
onWindowScroll() {
this.debouncedOnScroll();
}
private onScrollDown() {
console.log("onScrollDown")
}
感谢 JB Nizet,我可以解决我的需求,这是我的方法:
1) 创建你想要去抖动的函数:
private projectsLoad(myParameter): void {
// function code here...
};
2) 将其分配给 class 的 field/member:
private debounceProjectsLoad = _.debounce(
(myParameter) => this.projectsLoad(myParameter),
1500,
true
);
3) 在需要时调用去抖field/meber:
public loadProjectsGroup(myParameter: string): void {
this.debounceProjectsLoad(myParameter);
}