简单的问题,但没有找到有关该主题的文档:Polymer 2.0 中是否有去抖动器?如果可以,如何使用?this.debounce
是 1.0 中的一个实例方法,但它似乎已经消失了。
提前致谢!
最佳答案
传统 1.x 去抖器
您可以使用 1.x this.debounce()
方法通过 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()
返回,用于唯一标识 debouncer 作业。这相当于 1.x 的 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()
下一次调用 debounce 的方法才能正常工作。用法示例:
class XFoo extends Polymer.Element {
...
_onClick() {
this._debouncer = Polymer.Debouncer.debounce(
this._debouncer, // initially undefined
Polymer.Async.timeOut.after(2000),
callback);
}
}
codepen
关于polymer - Polymer 2.0 中的去抖动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42773171/