首页 > 解决方案 > 有比使用 setInterval() 检测 JavaScript 中的类变量更改更好的方法吗?

问题描述

如何从其实例监视类变量的更改?

我可以实现目标,setInterval()但代码变得根本不可读。

let calibrator = new Calibrator("hardwareName");
calibrator.connect();

let monitoring = setInterval(() => {
    if (calibrator.getState()) { // calibrator.getState() will become true when there's response from hardware.
        clearInterval(monitoring);
        // lots of logic here
    } else {
        // lots of logic here
    }
}, 0);

我希望任何人只要简单地阅读代码就可以很容易地知道我正在尝试监视一个类变量。但clearInterval()就高级逻辑而言,与此无关。

所以我想要一个更好的方法来做到这一点。

标签: javascript

解决方案


是的。有一个 API 用于Mutation Observer. 你可以在这里阅读更多:

https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

// The DOM node to observe
const target = document.getElementById("your-id");

// Callback function when changes occurs
function callback(mutationRecord, observer) {}

// Create a new instance of MutationObserver with callback in params
const observer = new MutationObserver(callback);

// Setup config
const config = {
  childList: true
};

// When everything is ready, we just observe our target
observer.observe(target, config);

推荐阅读