Lieber Toast,
Es handelt sich bei den Variablen um globale Variablen:
var request_Toggle = new XMLHttpRequest();
nicht gut, wie schon erwähnt.
Haben die globalen Variablen in diesen fall denn einen nachteil?
Ja, denn Deine Funktionen können sie nach Belieben überschreiben.
Du verwendest asynchrone HTTP-Requests, die vielleicht im Rudel auftreten. Wenn Du mehrere Requests nacheinander abschickst, sie sozusagen in einer Warteschlange stehen, alle dieselben globalen Variablen benutzen, dann rate doch einmal was passiert...!?
Nicht umsonst erzeugst Du ein _neues_ XMLHttpRequest-Objekt, da das alte bereits benutzt wird. Damit hast Du ein neues Objekt, dessen Eigenschaften Du neu beschreiben/auslesen/verwerten kannst. Globale Variablen hindern Dich da nur.
Welchen Weg würdest du mir stattdessen vorschlagen?
Stelle Dir die XHR als Menschen vor, die mit einer Tasche in der Hand an der Supermarktskasse stehen. Jeder XHR wurde neu erzeugt, hat seine _eigene_ Tasche und will seine speziellen _eigenen_ Kaufwünsche an der Kasse einlösen. Das bedeutet, dass Du objektorientiert schreiben musst. Deine funktionale Sichtweise hat Dich in die Sackgasse der globalen Variablen geführt. Was Du stattdessen brauchst, ist das Arbeiten mit asynchronen Methodenaufrufen. Ob das Timeout-gesteuerte Aufrufe sind, oder ob sie von einem XHR-Objekt her stammen, ist egal. Du musst eben Deine Funktionen so schreiben, dass sie Objekte entgegennehmen und relativ losgelöst vom restlichen Programmverlauf ihren Dienst tun.
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)