использование флеша на декораторе газа Лодаша - PullRequest
1 голос
/ 18 марта 2019

Использование TypeScript (JavaScript и Angular):

Я хочу, чтобы декоратор газа lodash ограничивал вызов API, пока пользователь перемещается по странице, но по-прежнему срабатывает до того, как он выгрузит (покинет) сайт.

В конструкторе машинописи у меня есть window.addEventListener('beforeunload', () => this.onUnload());

с функцией onUnload(), объявленной как

onUnload() {
    this.thisIsTheThrottledFunction.flush;
}

но я получаю сообщение об ошибке «Свойство flush не существует для типа '() => Promise'."

Функция, метод которой .flush, к которой я пытаюсь получить доступ, является объявленной удушенной версией другой функции. Функция успешно регулируется, поэтому я уверен, что часть кода работает. Каков наилучший способ доступа к методу .flush?

1 Ответ

1 голос
/ 18 марта 2019

Вы должны быть в состоянии отладить это, проверив, каково значение this. Мне кажется, что вам просто нужно bind значение this объекта для функции onUnload (или вы можете передать его). Например, вы можете поместить это в свой конструктор: this.onUnload = this.onUnload.bind(this). Для этого синтаксиса есть сахар, где вы определяете его в своем классе, используя onUnload = () => { ... }. Оба эти метода присоединяют метод к экземпляру, а не просто используют его как часть прототипа. Или вы можете передать связанную функцию непосредственно слушателю событий:

window.addEventListener('beforeunload', this.onUnload.bind(this));
...