Warum ist die setInterval-Funktion aufrufen einer Funktion mit der random-Argumente?

StackOverflow https://stackoverflow.com/questions/86269

  •  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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top