Дебоунер в полимер 2.0


Простой вопрос, но нет никакой документации по этому вопросу : есть ли дебаунсер в Polymer 2.0? Если да, то как его можно использовать? this.debounce был методом экземпляра в 1.0, но он, похоже, исчез.

Заранее спасибо!

1 11

1 ответ:

Наследие 1.X дебоунер

Вы можете использовать 1.x this.debounce() метод via Polymer.LegacyElementMixin:

class XFoo extends Polymer.LegacyElementMixin(Polymer.Element) {
  ...
  _onClick() {
    this.debounce('myDebouncer', callback, 2000);
  }
}

Codepen

Новый 2.X дебоунер

Эквивалент 2.0 равен Polymer.Debouncer.debounce(debouncer, asyncModule, cb), где:

  • debouncer

    Экземпляр Polymer.Debouncer, возвращенный из Polymer.Debouncer.debounce(), используемый для однозначной идентификации задания разборщика. Это эквивалентно 1.строка имени задания X debouncer. Это может быть изначально undefined/null чтобы создать новый пример.

  • asyncModule

    Одно из следующих:

  • cb

    Обратный вызов для вызова, Когда asyncModule завершает

Эта функция возвращает a Polymer.Debouncer экземпляр, который имеет метод cancel(), эквивалентный 1.x this.cancelDebouncer(JOB_NAME). Этот экземпляр следует передать в debounce() метод на следующем вызове для дебоунтинга будет работать должным образом.

пример использования:

class XFoo extends Polymer.Element {
  ...
  _onClick() {
    this._debouncer = Polymer.Debouncer.debounce(
       this._debouncer, // initially undefined
       Polymer.Async.timeOut.after(2000),
       callback);
  }
}

Codepen