Test name | Executions per second |
---|---|
disconnect/reconnect with 1 observe | 1190947.1 Ops/sec |
disconnect/reconnect with 2 observes | 973994.2 Ops/sec |
<div id="test">Test</div>
const __OBSERVER = Symbol('observer');
const div = document.getElementById('test');
function update1() {
if(!div[__OBSERVER]) {
div[__OBSERVER] = new MutationObserver(mutations => update1());
} else {
div[__OBSERVER].disconnect();
}
div.style.opacity = parseInt(div.style.opacity) ? 0 : 1;
div[__OBSERVER].observe(div, { attributeFilter: ['style'] });
}
function update2() {
if(!div[__OBSERVER]) {
div[__OBSERVER] = new MutationObserver(mutations => update2());
} else {
div[__OBSERVER].disconnect();
}
div.style.opacity = parseInt(div.style.opacity) ? 0 : 1;
div[__OBSERVER].observe(div, { attributeFilter: ['style'] });
div[__OBSERVER].observe(div, { characterData: true, subtree: true });
}
update1();
update2();