有没有更聪明的解决方案来等待节点存在而不使用间隔或固定重试时间?
目前,我这样做:
let interval = setInterval(function () {
let neededElement = document.querySelector("small > time");
if (neededElement !== null) {
clearInterval(interval);
...code...
}
}, 100);
困扰我的是它总是盲目地等待。如果时间太短,它会不必要地消耗资源,如果时间太长,它对变化的反应太慢。如果节点从不存在,它会在后台不必要地消耗资源。
可能突变观察者将是一个解决方案。但对我来说似乎也不是很光滑,特别是如果我经常需要这个。或者我需要某种(工厂)函数来构建突变观察者。
编辑:
在我的用例中,变异观察者的主要问题是脚本的可重用性和准确性。因为尚不存在的节点无法被观察到。因此,您必须转到确保它们立即存在的更高节点。但随后观察者也会对不重要的变化做出反应。根据用例,这些可能很多。因此,最终您可能比间隔时间节省的资源更少。