Warum ist die setInterval-Funktion aufrufen einer Funktion mit der random-Argumente?
-
01-07-2019 - |
Frage
Also, ich sehe eine merkwürdige problem.Wenn ich eine Funktion
// counter wraps around to beginning eventually, omitted for clarity.
var counter;
cycleCharts(chartId) {
// chartId should be undefined when called from setInterval
console.log('chartId: ' + chartId);
if(typeof chartId == 'undefined' || chartId < 0) {
next = counter++;
}
else {
next = chartId;
}
// ... do stuff to display the next chart
}
Diese Funktion kann aufgerufen werden, indem Benutzer die Aktion, in diesem Fall chartId
übergeben Sie als argument, und das ausgewählte Diagramm wird angezeigt;oder es kann im autoplay-Modus, in welchem Falle es durch eine setInterval
die initialisiert wird, die folgenden:
var cycleId = setInterval(cycleCharts, 10000);
Das seltsame ist, ich bin eigentlich sehen die cycleCharts()
Holen Sie sich einen chartId
argument, auch wenn es heißt von setInterval
!Die setInterval
nicht einmal irgendwelche Parameter zu übergeben, entlang der cycleCharts
Funktion, so bin ich sehr verblüfft, warum chartId
ist nicht undefiniert, wenn cycleCharts
aufgerufen, die der setInterval
.
Lösung
setInterval ist die Fütterung cycleCharts tatsächlichen timing-Daten ( so kann man die Arbeit, die aktuelle Zeit, es lief und produzieren ein weniger gestelzt Reaktion, vor allem praktisch in der animation )
Sie wollen
var cycleId = setInterval(function(){ cycleCharts(); }, 10000);
( dieses Verhalten kann nicht standardisiert werden, so nicht verlassen sich auf es zu stark )
Andere Tipps
Es sagt Ihnen, wie viele Millisekunden später der Rückruf aufgerufen wird.
var cycleId = setInterval(cycleCharts, 10000, 4242);
Ab dem Dritten parameter und ab - Sie bekommen an die Funktion übergeben, also in meinem Beispiel können Sie senden 4242 als die chartId.Ich weiß, es ist vielleicht nicht die Antwort auf die Frage, die Sie gestellt, aber es könnte die Lösung für Ihr problem?Ich denke, der Wert, den es bekommt, ist einfach Zufall, aus welcher liegt auf dem Stapel zum Zeitpunkt des Gefahrübergangs/Aufruf der Methode.