Ich bin neu in Javascript und ich habe Probleme mit der setInterval() -Funktion richtig.Aufruf von mehreren setInterval() Funktionen in js mit einer Schleife
Grundsätzlich möchte ich eine Funktion in verschiedenen vorgegebenen Intervallen für verschiedene Parameter aufrufen, die beide in Listen enthalten sind.
Ich habe eine Funktion namens MyFunction. Ich habe eine Liste namens myparam mit allen Variablen, die ich dieser Funktion übergeben möchte. Und schließlich habe ich eine Liste namens myfrequency, die die Zeit in Millis ist, die ich zwischen jedem Aufruf meiner Funktion mit dem in myparam angegebenen Parameter haben möchte. Ich versuche, so etwas wie diese, aber es funktioniert nicht:
for(i=0;i<myparam.length();i++;){
setInterval(function(){myfunction(myparam[i]);},myfrequency[i]);
}
Das Ergebnis des obigen Codes ist, dass es nur für den letzten Index funktioniert. Meine Funktion wird im richtigen Intervall mit dem richtigen Parameter für NUR den letzten Wert in Myparam aufgerufen.
Warum passiert das? Denke ich, dass setInterval() den Aufruf einer Funktion in einem Intervall inkorrekt einrichtet?
http://stackoverflow.com/questions/2728278/what-is-a-practical-use-for-a-closure-in-javascript die Antworten lesen, einer von ihnen zeigt Ihr genaues Problem –
Sehr häufiges Problem. Was passiert, wenn die setInterval-Funktion ausgelöst wird, ist die Schleife bereits abgeschlossen, sodass "i" auf das letzte Element zeigt. – david
@david fügt eine Verzögerung hinzu, um das zu beheben? Ich habe versucht, eine Verzögerung mit setTimeout() für jedes Mal setInterval ist aufgerufen, aber jetzt funktioniert es überhaupt nicht. – Saxman13