简单的问题,但没有关于这个问题的文件:Polymer 2.0中是否有debouncer?如果是这样,它怎么用? this.debounce 是1.0中的实例方法,但它似乎已经消失了 .
this.debounce
提前致谢!
您可以通过 Polymer.LegacyElementMixin 使用1.x this.debounce()方法:
Polymer.LegacyElementMixin
class XFoo extends Polymer.LegacyElementMixin(Polymer.Element) { ... _onClick() { this.debounce('myDebouncer', callback, 2000); } }
codepen
2.0当量是Polymer.Debouncer.debounce(debouncer, asyncModule, cb),其中:
debouncer
从 Polymer.Debouncer.debounce() 返回的 Polymer.Debouncer 实例,用于唯一标识去抖动作业 . 这相当于1.x去抖动作业名称字符串 . 这可以在最初 undefined / null 来创建一个新实例 .
Polymer.Debouncer.debounce()
Polymer.Debouncer
undefined
null
asyncModule
以下之一:
Polymer.Async.timeOut.after(TIMEOUT_MS)
Polymer.Async.idlePeriod
Polymer.Async.microTask
Polymer.Async.animationFrame
cb
回调在 asyncModule 完成时调用
此函数返回Polymer.Debouncer实例,该实例具有 cancel() 方法,相当于1.x this.cancelDebouncer(JOB_NAME) . 该实例应该在下一次调用时传递给 debounce() 方法,以使debouncing正常工作 .
cancel()
debounce()
用法示例:
class XFoo extends Polymer.Element { ... _onClick() { this._debouncer = Polymer.Debouncer.debounce( this._debouncer, // initially undefined Polymer.Async.timeOut.after(2000), callback); } }
1 回答
Legacy 1.x debouncer
您可以通过
Polymer.LegacyElementMixin
使用1.x this.debounce()方法:codepen
新2.x去抖动者
2.0当量是Polymer.Debouncer.debounce(debouncer, asyncModule, cb),其中:
debouncer
从
Polymer.Debouncer.debounce()
返回的Polymer.Debouncer
实例,用于唯一标识去抖动作业 . 这相当于1.x去抖动作业名称字符串 . 这可以在最初undefined
/null
来创建一个新实例 .asyncModule
以下之一:
Polymer.Async.timeOut.after(TIMEOUT_MS)
Polymer.Async.idlePeriod
Polymer.Async.microTask
Polymer.Async.animationFrame
cb
回调在
asyncModule
完成时调用此函数返回Polymer.Debouncer实例,该实例具有
cancel()
方法,相当于1.x this.cancelDebouncer(JOB_NAME) . 该实例应该在下一次调用时传递给debounce()
方法,以使debouncing正常工作 .用法示例:
codepen