Frage von Svsuperhirn, 70

Javascript interval mit variabelen?

Hallo liebe community,

Ich versuche gerade mir eine webapp zu programmieren mit javascript. Ich habe de code jetzt mal vereinfacht weil das sonst hier zu unübersichtlich geworden wäre. Es geht aber im grunde darum die funktion "updatePosition" nur einmal auszuführen und das in einem regelmässigem interval, nun bin ich auf die möglichkeit mit einer variabele boolean gestoßen, funktionieren tut es so aber anscheinend nicht weil die funktion updatePosition() wird noch immer wieder durchgeführt was einfach nicht gewollt ist. Habt ihr dafür eine lösung? Ich dachte an setInterval mit de boolean variabele aber es gehen ja anscheinend nur funktionen oder?

var runPerm=false;

function start() {
setInterval(setPerm, 2000)
setInterval(function() {new updatePosition()}, 2000);
}

function setPerm () {
    runPerm=true;
}

function updatePosition() {
    if (runPerm==true) {
   //einiges an code der durchlaufen werden soll
   runPerm=false;
   }
}
Antwort
von RakonDark, 23

kann mir einer erklären was ein

new updatefunktion in einem setInterval macht ?

bzw new auf eine funktion ?

Kommentar von Dory1 ,

new auf eine Funktion ist ja erst mal richtig, aber auch nur dann wirklich sinnvoll wenn es sich um einen Konstruktor handelt. Du hast schon Recht, an der Stelle ist es ziemlich unsinnig.

Antwort
von Dory1, 47

Das widerspricht sich: Wie kann man eine Funktion nur einmal ausführen, aber gleichzeitig in einem regelmäßigen Intervall?

Kannst du dein Problem etwas genauer beschreiben?

Kommentar von Svsuperhirn ,

Naja also halt ausführen jede 2000 ms zum beispiel. Ich habs so verkehrt beschrieben weil bei mir trotz des intervals die funktion anscheinend continuirlich aufgerufen wird und halt damit öfters in einem intervall aufgerufen wird. Ich hoffe jetzt ist es etwas deutlicher.

Kommentar von Dory1 ,

Ja, eine Funktion die du an setInterval übergibst wird kontinuierlich im angegebenen Intervall aufgerufen. Wenn du die Funktion nur einmal aufrufen willst hast du folgende Möglichkeiten:

deineFunktion();

... ruft die Funktion sofort einmal auf.

Wenn die Funktion nur einmal, aber erst 2000ms in der Zukunft aufgerufen werden soll:

setTimeout(deineFunktion, 2000);
Kommentar von EightSix ,

Du hast keine Ahnung was das Wort "Intervall" bedeutet, oder?

Kommentar von nikolaiki ,

Nein, er beschreibt ja, das die Routine zu oft ausgeführt wird. Zur Verteididigung muss man sagen, dass die Methode setIntervall in der Tat seltsame Effekte haben kann, wenn man nicht genau aufpasst. Das beste wird sein neu schreiben.

Antwort
von EightSix, 52

Sorry, ich versteh nur Bahnhof. Zitat:

"nur einmal auszuführen und das in einem regelmässigem interval"

Keine passende Antwort gefunden?

Fragen Sie die Community