使用TypeScript (JavaScript和Angular):
我希望lodash的油门装饰器在用户浏览页面时限制API调用,但在用户卸载(离开)站点之前仍会触发。
在typescript构造函数中,我有window.addEventListener('beforeunload', () => this.onUnload());
其中onUnload()函数被声明为
onUnload() {
this.thisIsTheThrottledFunction.flush;
}但是我得到了错误响应“属性'flush‘不存在于类型'() => Promise’上。”
我试图访问其.flush方法的函数是另一个函数的声明节流版本。该函数被成功地限制了,因此我确信部分代码可以正常工作。访问.flush方法的最佳方式是什么?
发布于 2019-03-18 23:52:01
您应该能够通过验证this的值来调试它。在我看来,您只需要将对象的this值传递给onUnload函数(或者您也可以传入它)。例如,您可以将以下内容放入您的构造函数:this.onUnload = this.onUnload.bind(this)。这种语法很有好处,您可以在类中使用onUnload = () => { ... }来定义它。这两种方法都将方法附加到实例,而不是将其作为原型的一部分。或者,您可以将绑定函数直接传递给事件侦听器:
window.addEventListener('beforeunload', this.onUnload.bind(this));https://stackoverflow.com/questions/55224540
复制相似问题