在Angular2和Typescript滚动中使用lodash去抖动不起作用

Com*_*ode 4 typescript lodash angular2-directives angular2-template angular

我有以下代码调用lodash去抖功能:

@HostListener("window:scroll", [])
onWindowScroll() {
    if (myBoolean) 
       _.debounce(this.onScrollDown(), 1500, false);

    }
}

private onScrollDown() {
    console.log("onScrollDown")
}
Run Code Online (Sandbox Code Playgroud)

但我在我的控制台中收到此错误:

Argument of type 'void' is not assignable to parameter of type 'Function'.
Run Code Online (Sandbox Code Playgroud)

以下是浏览器:

TypeError: Expected a function
    at Function.debounce 
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我正在使用打字稿

JB *_*zet 9

我不熟悉lodash,但我认为你想要的是:

private debouncedOnScroll = _.debounce(() => this.onScrollDown(), 1500, {});

@HostListener("window:scroll", [])
onWindowScroll() {
    this.debouncedOnScroll();
}

private onScrollDown() {
    console.log("onScrollDown")
}
Run Code Online (Sandbox Code Playgroud)


Com*_*ode 7

感谢JB Nizet,我可以解决我的需求,这是我的方法:

1)创建你想要去抖的功能:

private projectsLoad(myParameter): void {
   // function code here...
};
Run Code Online (Sandbox Code Playgroud)

2)将其分配给该类的字段/成员:

private debounceProjectsLoad = _.debounce(
    (myParameter) => this.projectsLoad(myParameter),
    1500,
    true
);
Run Code Online (Sandbox Code Playgroud)

3)在需要时调用debounced field/meber:

public loadProjectsGroup(myParameter: string): void {
    this.debounceProjectsLoad(myParameter);
}
Run Code Online (Sandbox Code Playgroud)