使用 TypeScript(JavaScript 和 Angular):
我希望 lodash 的 throttle 装饰器在用户浏览页面时限制 API 调用,但在他们卸载(离开)网站之前仍然触发。
在 typescript 构造函数中,我有 window.addEventListener('beforeunload', () => this.onUnload());
将 onUnload()
函数声明为
onUnload() {
this.thisIsTheThrottledFunction.flush;
}
但我收到错误响应“属性‘flush’在类型‘() => Promise’上不存在。”
我试图访问其 .flush
方法的函数是另一个函数的已声明限制版本。该功能已成功限制,因此我相信部分代码可以正常工作。访问 .flush
方法的最佳方式是什么?
最佳答案
您应该能够通过验证 this
的值来调试它。在我看来你只需要 bind
将对象的 this
值传递给 onUnload
函数(或者您可以将其传入)。例如,您可以将其放入您的构造函数中:this.onUnload = this.onUnload.bind(this)
。此语法有一个优点,您可以在类中使用 onUnload = () => { ... }
定义它。这两种方法都将方法附加到实例,而不仅仅是将其作为原型(prototype)的一部分。或者,您可以将绑定(bind)函数直接传递给您的事件监听器:
window.addEventListener('beforeunload', this.onUnload.bind(this));
关于javascript - 在 lodash 的 throttle 装饰器上使用 flush,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55224540/