Polymer 2.0中的去抖动器

Ced*_*rge 13 polymer polymer-2.x

简单的问题,但没有关于这个问题的文件:Polymer 2.0中是否有debouncer?如果是这样,它怎么用? this.debounce是1.0中的实例方法,但似乎已经消失了.

提前致谢!

ton*_*y19 31

遗产1.x去抖动者

您可以this.debounce()通过Polymer.LegacyElementMixin以下方式使用1.x 方法:

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

codepen

新的2.x去抖动者

2.0当量是Polymer.Debouncer.debounce(debouncer, asyncModule, cb),其中:

此函数返回一个Polymer.Debouncer实例,该实例具有cancel()等效于1.x 的方法this.cancelDebouncer(JOB_NAME).该实例应该debounce()在下次调用时传递给方法,以使debouncing正常工作.

用法示例:

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

codepen

  • 对于任何盲目复制的人来说 - "Polymer.Async.timeout.after"实际上应该是`Polymer.Async.timeOut.after`(大写O). (4认同)
  • 我不确定在大多数情况下您将使用与该函数返回的引用相同的引用作为第一个参数。这看起来很hack。 (2认同)