如何用Observer聚合物去抖动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Observer聚合物去抖动相关的知识,希望对你有一定的参考价值。
我试图在Web组件完成加载时运行getResponse
。但是,当我尝试运行它时,debounce
函数只是作为异步延迟,并在5000 ms后运行4次。
static get properties() {
return {
procedure: {
type: String,
observer: 'debounce'
}
}
}
debounce() {
this._debouncer = Polymer.Debouncer.debounce(this._debouncer, Polymer.Async.timeOut.after(5000), () => {
this.getResponse();
});
}
getResponse() {
console.log('get resp');
}
在加载元素时,有什么必要让getResponse
运行一次?
答案
你确定你想要使用debouncer吗?你可以使用connectedCallBack来获得一个时间事件
class DemoElement extends htmlElement {
constructor() {
super();
this.callStack = 'constructor->';
}
connectedCallback() {
this.callStack += 'connectedCallback';
console.log('rendered');
fetch(this.fakeAjax()).then((response) => {
// can't do real ajax request here so we fake it... normally you would do
// something like this.innerHTML = response.text();
// not that "rendered" get console logged before "fetch done"
this.innerHTML = `
<p>${this.callStack}</p>
<p>${response.statusText}</p>
`;
console.log('fetch done');
}).catch(function(err) {
console.log(err); // Error :(
});
}
fakeAjax() {
return window.URL.createObjectURL(new Blob(['empty']));
};
}
customElements.define('demo-element', DemoElement);
<demo-element></demo-element>
以上是关于如何用Observer聚合物去抖动的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data MongoDB:如何用 Spring Aggregation 描述聚合 $merge?