Hallo, ich versuche gerade, eine rekursive Funktion (hier rinseNrepeat
) zu schreiben, die ich möglichst allgemein halten will, damit ich sie
mehrmals flexibel einsetzen kann (und so unnötige Redundanzen vermeide).
Diese Funktion beinhaltet nun leider ein setTimeout, welches von außerhalb der Funktion wieder geclear
ed werden
soll, hier exemplarisch auf button
click
. Dazu muss ich das Timeout in einer von außerhalb des Funktionsscope zugänglichen Variable speichern (damit der Button Zugriff hat).
Wenn ich die setTimeout-Variable aber innerhalb der Funktion hardcode, so ist diese nicht mehr flexibel gehalten und allgemein überall verwendbar,
daher wollte ich die Variable, in der das setTimeout gespeichert wird, als Argument der Funktion übergeben. Dazu definiere ich zuerst ein Objekt (hier: varSammelobjekt
).
In diesem Objekt will ich nun die Timeouts speichern, nach dem Schema
varSammelobjekt = {
Timeout1: setTimeout(rinseNrepeat, 1000),
// etc.
};
Das funktioniert leider nicht so, wie ich mir das vorstelle. Was mache ich falsch, wie mache ich's richtig?
Der Kot:
const stopDenWahnsinn = document.getElementById("stopDenWahnsinn"); // im DOM ein Button mit dieser ID
let varSammelobjekt = {};
function rinseNrepeat(timeoutVar) {
console.log("Hallo aus Funktion");
// Weiterer Code
timeoutVar = setTimeout(rinseNrepeat, 1000);
}
rinseNrepeat(varSammelobjekt["Timeout1"]);
stopDenWahnsinn.addEventListener("click", () => {
clearTimeout(varSammelobjekt["Timeout1"]);
// tut nix X(
});
Dank euch mit Herzlichkeit