在lodash的油门装饰器上使用flush

时间:2019-03-18 15:15:31

标签: javascript typescript lodash

使用TypeScript(JavaScript和Angular):

我希望lodash的油门装饰器可以在用户浏览页面时限制API调用,但是在卸载(离开)站点之前仍然可以触发。

在打字稿构造函数中,我有window.addEventListener('beforeunload', () => this.onUnload());

,其中onUnload()函数被声明为

onUnload() {
    this.thisIsTheThrottledFunction.flush;
}

但是我收到错误响应“类型(()=> Promise'上不存在属性'flush'。”

我尝试访问其.flush方法的函数是其他函数的声明的限制版本。该函数已成功调节,因此我相信部分代码可以正常工作。访问.flush方法的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您应该能够通过验证this的值来对其进行调试。在我看来,您只需要将对象的thisonUnload传递到this.onUnload = this.onUnload.bind(this)函数(或者可以将其传递)即可。例如,您可以将其放在您的构造函数中:onUnload = () => { ... }。这种语法有一个优势,您可以在类中使用window.addEventListener('beforeunload', this.onUnload.bind(this)); 对其进行定义。这两种方法都将方法附加到实例上,而不仅仅是将其作为原型的一部分。或者,您可以将绑定函数直接传递给事件侦听器:

    &.accounts {
      display: block;
      margin: 0 auto;
      height: auto;

      .text {
        width: auto;
        padding: 0;
        text-align: center;
      }

      .image {
        width: auto;
        height: 300px;
        background-image: url('/assets/scrn-accounts.png');
        background-repeat: no-repeat;
        background-position: 100px 0;
        background-size: cover;
        margin: 20px 0;
      }

    }