15
votes

Simple question, but no documentation is to be found on the subject : is there a debouncer in Polymer 2.0? If so, how can it be used? this.debounce was an instance method in 1.0, but it appears to have disappeared.

Thanks in advance!

1

1 Answers

33
votes

Legacy 1.x debouncer

You can use the 1.x this.debounce() method via Polymer.LegacyElementMixin:

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

codepen

New 2.x debouncer

The 2.0 equivalent is Polymer.Debouncer.debounce(debouncer, asyncModule, cb), where:

This function returns a Polymer.Debouncer instance, which has a cancel() method, equivalent to 1.x this.cancelDebouncer(JOB_NAME). That instance should be passed to the debounce() method on the next call for debouncing to work properly.

Example usage:

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

codepen