Karl Konrad Koreander: MutationObserver-Schleife stoppt vor dem letzten Element

Beitrag lesen

Schönen Nachmittag,

Ich habe einen HTML-#Holder mit 5 IMGs. Ich habe einen MutationObserver, der die Attributveränderung von Elementen überwacht. Diese Elemente werden in einem ObserverVar-Objekt gesammelt, gleichzeitig wird El_Warteschleife um 1 erhöht. Wird eine Mutation erkannt, so kann der Observer des dazugehörigen Objekt wieder freigegeben werden (disconnect) und El_Warteschleife wird wieder um 1 vermindert.

...daher sollte am Ende des Tages El_Warteschleife bei 0 angelangt sein und console.log("NULL ANGELANGT!") triggern, das passiert aber nicht.

Zur Verdeutlichung logge ich auch das letzte Objekt mit console.log(obj), wodurch man schön sieht, dass die "naechsterSchritt"-Funktion VOR dem letzten Element stoppt.

Mein(e) Frage / Problem:

Warum "stoppt" meine "naechsterSchritt"-Funktion VOR dem letzten Element anstatt dass "NULL ANGELANGT!" freigegeben wird?

Danke!

let El_Warteschleife = 0;
let ObserverVar = {};
let ObjektZaehler = 0;

let ObsFunc = (obj) => {
	let naechsterSchritt = () => {
		console.log(obj); // letztes Objekt nicht mehr dabei!
		ObserverVar[ObjektZaehler].disconnect();
		El_Warteschleife--;
		if (El_Warteschleife === 0) {
			console.log("NULL ANGELANGT!");
		}
	};

	Object.keys(ObserverVar).length === 0 ? ObjektZaehler = 0 : ObjektZaehler++;		
	let config = {};
	config["attributes"] = true;
	let callback = () => {
		naechsterSchritt.call(null, ObserverVar);
	};
	ObserverVar[ObjektZaehler] = new MutationObserver(callback);
	ObserverVar[ObjektZaehler].observe(obj, config);

};

let LosGehts = (arg) => {
		El_Warteschleife++;
		ObsFunc(arg);
		arg.style["top"] = "12px";
};

let holder = document.getElementById("holder");
[...holder.children].forEach(el => {
	LosGehts(el);
});