gpt4 book ai didi

javascript - MutationObserver 仅用于最后一个突变

转载 作者:行者123 更新时间:2023-11-29 20:59:17 26 4
gpt4 key购买 nike

我正在使用 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'] });

关于javascript - MutationObserver 仅用于最后一个突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com