我正在使用MutationObserver
将位置更改保存在可拖动对象中。
看起来像这样:
let observer = new MutationObserver( (mutations) => {
mutations.forEach( (mutation) => {
this.builderData[element.id].$position.left = element.style.left;
this.builderData[element.id].$position.top = element.style.top;
this.saveBuilderData();
});
});
observer.observe(element, { attributes : true, attributeFilter : ['style'] });
但是,每次像素更改都会运行一次,因此可以节省很多操作。我只想保存它停止突变大约1秒钟后,或者每个回调不包含前一个回调。我已经用RxJava做过类似的事情,但是没有使用过MutationObserver
。
有任何想法吗?
您可以通过setTimeout添加一个简单的1秒延迟。
这样,先前的回调将被丢弃,并且仅在不活动1秒后才更改样式:
let timer;
let observer = new MutationObserver( (mutations) => {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
mutations.forEach( (mutation) => {
this.builderData[element.id].$position.left = element.style.left;
this.builderData[element.id].$position.top = element.style.top;
this.saveBuilderData();
});
}, 1000);
});
observer.observe(element, { attributes : true, attributeFilter : ['style'] });
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句