MutationObserver仅适用于最后一个突变

戴维·佩纳

我正在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Appendchild仅适用于最后一个元素

多个 ag-grids - setSelected 为 true 仅适用于最后一个网格

Magento表单验证仅适用于组中的最后一个复选框

.each()中的setInterval仅适用于最后一个间隔?

bash set -e(errexit)仅适用于管道中的最后一个命令?

在循环中添加addEventListener()仅适用于最后一个按钮

必应地图图钉单击事件处理程序仅适用于最后一个

当您有多个窗口时,Electron ApplicationMenu仅适用于最后一个窗口

函数仅适用于使用.each函数的最后一个div

延迟加载vimeo仅适用于数组中的最后一个

GPUImage capturePhotoAsImageProcessedUpToFilter仅适用于最后一个滤镜

jQuery HoverIntent仅适用于最后一个div

Airflow 动态任务依赖设置仅适用于列表中的最后一个元素

循环内的onclick值仅适用于表中的最后一个值

jQuery插件仅适用于最后一个选择器

我的 css ::after 仅适用于最后一个元素

嵌套范围仅适用于最后一个范围

我的循环仅适用于最后一个文件R

react-intersection-observer 仅适用于最后一个元素

JavaScript 动态按钮 OnClick 事件仅适用于创建的最后一个按钮

HTML / CSS仅适用于第一个和最后一个目标

绑定仅适用于一个元素

.index()仅适用于类的一个实例

jQuery动画仅适用于一个元素

DynamicResource仅适用于一个绑定?

Bash IFS仅适用于一个

JavaScript 仅适用于一个 div

在两个不同的 JFrame 中打开的相同菜单仅适用于最后一个

最后一个孩子/最后一个类型不适用于 div