Domanda

Quindi, vedo un problema curioso.Se ho una funzione

// 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
}

Questa funzione può essere chiamata esplicitamente dall'azione dell'utente, nel qual caso chartId viene passato come argomento e viene mostrato il grafico selezionato;oppure può essere in modalità di riproduzione automatica, nel qual caso viene chiamato da a setInterval che viene inizializzato come segue:

var cycleId = setInterval(cycleCharts, 10000);

La cosa strana è che in realtà sto vedendo il file cycleCharts() prendi un chartId argomento anche quando viene chiamato da setInterval!IL setInterval non ha nemmeno parametri da passare al file cycleCharts funzione, quindi sono molto sconcertato sul perché chartId non è indefinito quando cycleCharts è chiamato dal setInterval.

È stato utile?

Soluzione

setInterval fornisce a cycleCharts i dati temporali effettivi (in modo da poter calcolare il tempo effettivo in cui è stato eseguito e utilizzarlo per produrre una risposta meno artificiosa, per lo più pratica nell'animazione)

tu vuoi

 var cycleId = setInterval(function(){ cycleCharts(); }, 10000); 

(questo comportamento potrebbe non essere standardizzato, quindi non fare troppo affidamento su di esso)

Altri suggerimenti

Ti dice con quanti millisecondi di ritardo viene chiamata la richiamata.

var cycleId = setInterval(cycleCharts, 10000, 4242);

Dal terzo parametro in poi, vengono passati alla funzione, quindi nel mio esempio invii 4242 come chartId.So che potrebbe non essere la risposta alla domanda che hai posto, ma potrebbe essere la soluzione al tuo problema?Penso che il valore che ottiene sia semplicemente casuale da qualunque cosa si trovi nello stack al momento del passaggio/chiamata del metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top